Facelets介绍

Facelets介绍

  1. Facelets介绍

    JSF和Java服务器页面技术之间的不匹配,是JSF开发中的一个严重问题。问题是如何把JSP的动 态内容集成到JSF基于组件的模型中。JSP非常重视生成动态内容输出,而JSF需要JSP来协调组件模型的构建。因为这个任务超出了JSP原来的目的, 所以产生了距离。于是,有人认为“试图把 JSF 和 JSP 结合起来就像试图要把脚硬塞进手套一样:可能做得到,但是只是更好的解决办法出现之前的一个权宜之计”。

    既然JSF和JSP结合起来困难重重,期待中的“更好的解决办法”出现了吗?是的,这个解决办法就是将要为你介绍的Facelets。

    Facelets是用来建立JSF应用程序时的一个可供选择的表现层技术。它提供了一个强有力的模板化系统,让你使用HTML样式的模板来定义JSF的表现层,减少了组件整合进表现层时候冗余的代码。

    先看一个简单的Facelets示例:

     1  < html  xmlns ="http://www.w3.org/1999/xhtml"
     2      xmlns:h ="http://java.sun.com/jsf/html"
     3      xmlns:f ="http://java.sun.com/jsf/core" >
     4  < head >
     5  < meta  http-equiv ="Content-Type"  content ="text/html; charset=iso-8859-1"   />
     6  < title > My First Facelet </ title >
     7  </ head >
     8  < body >
     9  Hi. My name is Duke. I'm thinking of a number from
    10  #{UserNumberBean.minimum} to #{UserNumberBean.maximum}. Can you guess
    11  it?
    12  < input  type ="text"  jsfc ="h:inputText"  id ="userNo"
    13      value ="#{UserNumberBean.userNumber}" />
    14  < input  type ="submit"  jsfc ="h:commandButton"  id ="submit"  action ="success"
    15      value ="Submit"   />
    16  </ body >
    17  </ html >
     

    你可能会感觉到这些标签看起来特别熟悉。这就是要点。使用Facelets不需要学习额外的模板语言或schema。Facelets的优点还有许多,这里不一一点出,关注Facelets的用户可浏览java.net Facelets项目主页。

  2. Facelets支持

    Facelets在解决JSF应用程序的展现方面是如此的优秀,不少开发者使用Facelets开发JSF。支持Facelets的方法很简单,只要遵循以下步骤即可:

    1、将jsf-faceles.jar放到WEB-INF/lib目录中。注意:jar包需是facelets 1.1.12或以上版本。

    2、修改WEB-INF/web.xml,增加以下配置:

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

    3、修改WEB-INF/faces-config.xml,增加以下配置:

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

     建立Facelets的模版页

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"       
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
< html  xmlns ="http://www.w3.org/1999/xhtml"
      xmlns:ui
="http://java.sun.com/jsf/facelets" >
< head >
< meta  http-equiv ="Content-Type"  content ="text/html; charset=iso-8859-1"   />
< title > Sample Template </ title >
</ head >
< body >
< h1 > #{title} </ h1 >
< table  border ="1" >
    
< tr >
        
< td >
            
< ui:insert  name ="menu"   />
        
</ td >
        
< td >
            
< ui:insert  name ="body"   />
        
</ td >
    
</ tr >
</ table >
</ body >
</ html >

然后建立client页面:


< body >
   
< ui:composition  template ="template.xhtml" >
    
< ui:param  name ="title"  value ="Here's my Title"   />
    
< ui:define  name ="menu" > Here's My Menu </ ui:define >
   
< ui:define  name ="body" > Here's My Body </ ui:define >
   
</ ui:composition >
</ body >

浏览效果,需要注意的是URL的后缀名需为faces:



你可能感兴趣的:(Facelets介绍)