您的位置:首页 > 移动开发

学习Facelets的一些体会!

2012-04-13 13:51 169 查看
           互联网日新月异的发展,促进了web开发语言也不断的简单化,高效化,可移植化。作为下一代构建基于构件的web应用的新标准java框架,JSF已经在默默的替换了一些旧的框架。由金蝶软件封装的OperaMasks受到了很多开发者的青睐。

           OperaMasks:按我的说法,就是对JSF进行了封装可扩展,如在原来的基础上进行重构,展示构件更多了;配置文件更简略了。

           Facelets,相对于JSP而言,更适合表现构件化页面的显示技术,在JSF2.0规范中,也是默认的显示技术。下面说说Facelets在OperaMasks框架下使用以及用途。

           首先是配置,当然你要导入对应的jar包,然后在web.xml文件中添加:

            <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value></context-param>

           这句话的意思是默认采用XHTML来实现视图  XHTML:是可扩展的HTML

 

            在faces-config.xml加上:

            <application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler></application>

            这句话的意思是告诉OperaMasks用Facelets作为view的处理者。

             在配置方面就这些!

 

            其次,介绍下模板

            我们都知道模板的概念,无非就是把公共的东西抽离出来,在需要的地方用模板从而达到简化开发的作用,Facelets下的模板也是如此,举下面的例子,相信大家都明白了

             <!-- 模版页面文件:template.xhtml -->

            <span class="muban">

            <c:forEach begin="1" end="10">

             <ui:insert /> <br />

             </c:forEach>

             </span>

 

              <!-- 模版适配页面文件 -->

              <ui:composition template="template.xhtml">测试模板页面 <h:outputText value="#{user.name}" />!

              </ui:composition>

 

               访问适配页面时,如下:

              <span class="muban">

              <c:forEach begin="1" end="10">测试模板页面<h:outputText value="#{user.name}" />! <br />

              </c:forEach>

              </span>

 

               一目了然,<ui:insert />:模板中要被适配页面替换的内容,<ui:composition template="template.xhtml">:要嵌入的模板文件。

               当然,模板里还有很多别的用途,如传参等等。

 

              第三,复合构件

              如其名,就是在现有构件的基础上重新组装和定制的构件。用复合构件好处:

              1,精简代码

               2,构件重用

              3,方便加其他的功能

 

                配置:

              <!-- mycomponent.taglib.xml--><!DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"><facelet-taglib> <namespace>http://www.mycompany.com/aom</namespace> <tag>
<tag-name>fuhegoujian</tag-name> <source>fuhegoujian.xhtml</source> </tag></facelet-taglib>

 

                DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
http://java.sun.com/dtd/web-facesconfig_1_0.dtd 引入规范定义文件

                <namespace>http://www.mycompany.com/aom</namespace>:定义复合构件的命名空间

               <tag-name>fuhegoujian</tag-name>:定义复合构件的构件名称

                <source>fuhegoujian.xhtml</source>:定义复合构件路径

 

               web.xml:初始化构件

               <!-- web.xml--><context-param> <param-name>facelets.LIBRARIES</param-name> <param-value> /WEB-INF/facelets/tags/mycomponent.taglib.xml </param-value></context-param>

 

               定义构件:

              <!--fuhegoujian.xhtml -->

             <ui:composition>

                     ......

             </ui:composition>

 

             引入使用:

            <f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"

             xmlns:w="http://www.apusic.com/jsf/widget" xmlns:layout="http://www.apusic.com/jsf/layout"

            xmlns:my="http://www.mycompany.com/aom" xmlns:ui="http://java.sun.com/jsf/facelets" renderKitId="AJAX">

           ....

           <my:fuhegoujian  fieldName="title" 

          backingBean="#{testBean}"/>

          .....

             

           先介绍这么多,吼吼!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息