日期:2014-05-16  浏览次数:20366 次

JavaEE5学习笔记14-JSF集成Facelets使用经验总结

1.?????? Facelets就像tilessitemesh一样,以为了JSF模板布局而提出的页面模板框架,使用Facelets,先将项目页面的整体样式模板设计好(比如采用一般的上、中、下结构)。之后项目的其他页面布局只需要声明采用预先定义好的布局框架即可。使得用了最少的页面代码完成了整个系统样式的统一。

2.?????? JSF集成facelets的准备

首先下载facelets相关的jar包,jsf-facelets.jar,在https://facelets.dev.java.net/就可以得到它。

修改web.xml,加入如下内容

<context-param>
		<description>指定facelets支持的后缀</description>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.xhtml</param-value>
	</context-param>
?就是说,凡是xhtml文件结尾的都支持可以使用定义好的facelets模板。修改JSF配置文件,增加如下内容

<!--配置facelets-->
	<application>
		<locale-config>
			<default-locale>zh_CN</default-locale>
		</locale-config>	<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
	</application>

?此处是告诉JSF,采用FaceletViewHandler进行视图处理器,这个处理器在JSF生命周期的第1阶段和第6阶段生效。也就是说视图创建阶段和返回响应阶段,将布局特效夹杂其中。这样环境算是配好了。

模板页面

我们先定义一个模板页面,这个页面就是所有页面布局的基础,其他页面呈现出来的效果都是基于此模板页面的。代码如下:

layout.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!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"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">
	<head>
		<title><ui:insert name="title">Facelets模板</ui:insert>
		</title>
	</head>
	<body bgcolor="#ffffff" text="#000000" link="#023264" alink="#023264"
		vlink="#023264">

		<table border="0" width="768px" align=