gembin

OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

HBase, Hadoop, ZooKeeper, Cassandra

Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

About Me

 

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:



posted on 2008-03-05 16:19 gembin 阅读(1034) 评论(0)  编辑  收藏 所属分类: JSF


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(6)

随笔分类(440)

随笔档案(378)

文章档案(6)

新闻档案(1)

相册

收藏夹(9)

Adobe

Android

AS3

Blog-Links

Build

Design Pattern

Eclipse

Favorite Links

Flickr

Game Dev

HBase

Identity Management

IT resources

JEE

Language

OpenID

OSGi

SOA

Version Control

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

free counters