技术开发 频道

在Java EE 6中使用JSF 2.0简化页面制作

  【IT168 文档】过去几个星期,我们对Java EE 6的新特性进行了一系列介绍。除了Servlet 3.0的特性,Java EE 6也使用了新的JSF 2.0标准。下面我们来看一看JSF 2.0是如何简化页面制作并提供Ajax支持的。最后,我们对Servlet 3.0和JSF 2.0的新特性进行了总结。

  简化JSF 2.0页面制作

  JavaServer Faces技术提供了一个服务端组件框架,简化了Java EE应用程序用户界面的开发,其中最显著的改进是页面制作,通过使用标准的JavaServer Faces视图声明语言(JavaServer Faces View Declaration Language,俗称Facelets)创建一个JSF页面更加容易。

  Facelets

  Facelets是一个强大的轻量级声明语言,可以使用它展示一个JSF页面,使用Facelets时,你可以使用HTML风格的模板展示一个JSF页面,也可以构建一个组件树,JSF应用程序中的用户界面通常是由JSF组件构成的JSF页面,Facelets在JSP之上提供了更多优点。

  在JSP中,Web页面中的元素是按照渐进顺序处理和渲染的,而JSF提供了它自己的处理和渲染顺序,这可能会导致不可预测的行为发生,Facelets解决了这个问题,通过模板,Facelets也允许代码复用,可以大大减少开发UI的时间,现在Facelets已经成为构建JSF应用程序的首选技术。

  Facelets通常是使用XHTML标记语言编写的,因此Facelets是可以跨不同开发平台的,下面是Java EE 6教材中提供的JSF页面的Facelets 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" xml:lang="en" lang="en" 
           xmlns:f="http://java.sun.com/jsf/core" 
           xmlns:h=http://java.sun.com/jsf/html
            xmlns:ui="http://java.sun.com/jsf/facelets"> 
   <head>
            
<title>Guess Number JSF Application</title>
    
</head>
    
<body>
      
<h:form>
        
<h2>
        Hi. My name is Duke. I am thinking of a number from
<b>
              
<h:outputText value="#{UserNumberBean.minimum}"/> to 
               &nbsp;&nbsp;<b>
        
<h:outputText value="#{UserNumberBean.maximum}"/>
.         <p>
          Can you guess it ?
         </p>
        
<h:graphicImage id="waveImg" url="/wave.med.gif" />
        
<h:inputText id="userNo"
              value="#{UserNumberBean.userNumber}">
           converterMessage="#{ErrMsg.userNoConvert}">
        <f:validateLongRange
              
minimum="#{UserNumberBean.minimum}"
              maximum="#{UserNumberBean.maximum}"/>
        </h:inputText>
        
<h:commandButton id="submit"
              action
="success" value="submit" />
        
<h:message showSummary="true" showDetail="false"
                   style="color: red;
                     font-family: 'New Century Schoolbook', serif;
                     font-style: oblique;
                    text-decoration: overline"

                    id
="errors1"
                    for
="userNo"/>
        
</h2>
      
</h:form>
    
</body>
    
</html>

  这个Facelets XHTML页面和普通JSP页面并没有多大不同,Facelets支持JSF和JSTL标签库,它也包括一个Facelets标签库,支持功能丰富的页面模板。命名空间声明xmlns:ui="http://java.sun.com/jsf/facelets"就是针对facelets标签库的,但这里没有使用facelets标签库的标签,facelets也支持统一的表达式语言。

  页面渲染效果如图1所示。

 

0
相关文章