`
log_cd
  • 浏览: 1101671 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于JSF2.0(Java™Server Faces 2.0)

阅读更多
一、资源
(1)JSF主页:
      https://javaserverfaces.dev.java.net/
(2)下载地址:
      https://javaserverfaces.dev.java.net/servlets/ProjectDocumentList
二、新特性
(1)去掉 XML 配置
      在使用 JSF 1 的情况下,在 places 应用程序中声明托管 bean 的XML如下:
<managed-bean>
  <managed-bean-class>com.clarity.MapService</managed-bean-class>
  <managed-bean-name>mapService</managed-bean-name>
  <managed-bean-scope>application</managed-bean-scope>
</managed-bean>

<managed-bean>
  <managed-bean-class>com.clarity.WeatherService</managed-bean-class>
  <managed-bean-name>weatherService</managed-bean-name>
  <managed-bean-scope>application</managed-bean-scope>
</managed-bean>

<managed-bean>
  <managed-bean-class>com.clarity.Places</managed-bean-class>
  <managed-bean-name>places</managed-bean-name>
  <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<managed-bean>
  <managed-bean-class>com.clarity.Place</managed-bean-class>
  <managed-bean-name>place</managed-bean-name>
  <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

      对于 JSF 2,XML 消失了,您将对类使用注释:
@ManagedBean(eager=true)
public class MapService {
  ...
}

@ManagedBean(eager=true)
public class WeatherService {
  ...
}

@ManagedBean()
@SessionScoped
public class Places {
  ...
}

@ManagedBean()
@RequestScoped
public class Place {
  ...
}

      按照约定,托管 bean 的名称与类名相同,类名的第一个字母被转换为小写。也可以使用 ManagedBean 注释的 name 属性显式地指定一个托管 bean,比如:@ManagedBean(name = "place")。
      对 mapService 和 webService 托管 bean 使用 eager 属性。当 eager 属性为 true 时,JSF 将在启动时创建托管 bean 并将其放入应用程序范围。
      也可以使用 @ManagedProperty 注释设置托管 bean 属性。
   从 faces-config.xml 中移除托管 bean 声明将极大地减少 XML,但是在 JSF 2 中,通过使用注释或是约定(比如 JSF 2 的简化的导航处理),几乎可以去掉所有的 XML 内容。
(2)简化导航
      在 JSF 1 中,导航使用 XML 指定。比如,要从 login.xhtml 转到 places.xhtml:
<navigation-rule>
  <navigation-case>
    <from-view-id>/pages/login.xhtml</from-view-id>
    <outcome>places</outcome>
    <to-view-id>/pages/places.xhtml</to-view-id>
  </navigation-case>
</navigation-rule>

      可以利用 JSF 2 的导航约定:JSF 将 .xhtml 添加到按钮操作的末尾并加载该文件。这意味着不需要使用注释或其他内容,只需要使用约定就可以完整地避免编写导航规则的需求。
<h:commandButton id="loginButton"
  value="#{msgs.loginButtonText}"
  action="places"/>

      按钮加载 places.xhtml,但是前提是该文件和按钮所在的文件处于同一个目录中。如果操作并没有以斜杠(/)开头,那么 JSF 认为这是一个相对路径。如果需要更加明确一点,可以指定一个绝对路径:
<h:commandButton id="loginButton"
  value="#{msgs.loginButtonText}"
  action="/pages/places"/>

      JSF 将加载 /pages/places.xhtml 文件。

      默认情况下,JSF 将从一个 XHTML 页面转至另一个 XHTML 页面,但是通过指定 faces-redirect 参数可以重定向:
<h:commandButton id="loginButton"
  value="#{msgs.loginButtonText}"
  action="places?faces-redirect=true"/>

(3)使用 Groovy
      Java 技术的最大优势并不是 Java 语言,而是 Java 虚拟机(JVM)。在 JVM 上运行着强大、新颖和创新的语言,比如 Scala、JRuby 和 Groovy,这使您在编写代码时拥有了更多选择。Groovy 这个名字有些奇怪,但是功能非常强大,融合了 Ruby、Smalltalk 和 Java 语言,它是这些语言中最为流行的一种语言。
      使用 Groovy 的理由有很多。首先,它要比 Java 语言更加简洁、功能更加强大。还有两个原因:不使用分号,不需要强制转换(casting)。
      可以将 Groovy 用于任何使用 Java 代码编写的 JSF 工件 — 例如,组件、呈现器、验证器和转换器。事实上,这对于 JSF 2 来说并不新鲜 — 因为 Groovy 源文件编译为 Java 字节码,您只需使用 Groovy 生成的 .class 文件,就好象它们是由 javac 生成的一样。当然,Groovy 生成的 .class 文件可以正常工作后,需要了解如何热部署 Groovy 源代码,并且对于 Eclipse 用户,答案非常简单:下载并安装 Groovy Eclipse 插件。Mojarra 是 Sun 的 JSF 实现,从版本 1.2_09 之后提供了对 Groovy 的明确支持。
(4)利用资源处理程序
      JSF 2 提供了定义和访问资源的标准机制。您将自己的资源放到名为 resources 的顶级目录下,并使用一些 JSF 2 标记来在视图中访问这些资源。
      对资源的惟一需求是它必须位于 resources 目录或 resources 目录的子目录中。可以随意命名 resources 目录的子目录。
      在您的视图代码中,可以使用两个 JSF 2 标记访问资源:<h:outputScript> 和 <h:outputStylesheet>。这些标记可以结合用于 JSF 2 的 <h:head> 和 <h:body> 标记,如:
<h:body>
    <h:outputStylesheet library="css" name="styles.css" target="body"/>
    <h:outputScript library="javascript" name="util.js" target="head"/>
    ...
</h:body>

      <h:outputScript> 和 <h:outputStylesheet> 标记有两个属性,分别指定了脚本或样式表:library 和 name。library 名称对应于 resources 目录下的子目录,这是保存资源的位置。例如,如果在 resources/css/en 目录中有一个样式表,那么 library 将为 css/en。name 属性是资源本身的名称。
      有些情况下,需要使用 JSF 表达式语言(EL)访问资源。比如,使用 <h:graphicImage> 访问一个图像:
<h:graphicImage value="#{resource['images:cloudy.gif']}"/>

      在 EL 表达式内访问资源的语法是 resource['LIBRARY:NAME'],其中  LIBRARY   和  NAME   对应于 <h:outputScript> 和 <h:outputStylesheet> 标记的 library 和 name 属性。所以可以下面这样用:
<h:graphicImage library="images" name="cloudy.gif"/>

三、HelloWorld示例
(1)web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>hello.xhtml</welcome-file>
    </welcome-file-list>
  
</web-app>

     javax.faces.application.ProjectStage提供了下面的选项:Production、Development、UnitTest、SystemTest、Extension。调用Application.getProjectStage()来查询Application对象得到已配置的值。缺省值为ProjectStage.Production。

(2)页面文件
(a)hello.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"  
      xmlns:f="http://java.sun.com/jsf/core"  
      xmlns:ui="http://java.sun.com/jsf/facelets">  
	 <f:view contentType="text/html"/>
     <h:head>  
         <title>Hello  World</title> 
         <h:outputStylesheet name="css/public.css"/> 
     </h:head>  
     <body>  
        <h:form id="helloForm" >
            <h:graphicImage id="waveImg" url="#{resource['images/wave.med.gif']}" />
            <h:inputText id="name" class="oneInput" value="#{hello.name}"/>
            &nbsp;&nbsp;&nbsp;&nbsp;
            <h:commandButton id="submit" class="NormalButton" action="response" value="确  定"/>
        </h:form>  
     </body>  
</html>

(b)response.xhtml
<!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:f="http://java.sun.com/jsf/core"      
      xmlns:h="http://java.sun.com/jsf/html">
<f:view contentType="text/html; charset=utf-8"/>
<head>
	<title>Response</title>
	<link type="text/css" rel="stylesheet" href="#{resource['css:public.css']}"/>
</head>
<body>
    <h:form id="responseform">
    	<img src="#{resource['images:wave.med.gif']}" alt="Hello!"/>
    	<font color="green">Hi, #{hello.name}</font>
    	&nbsp;&nbsp;&nbsp;&nbsp;
    	<h:commandButton id="back" class="NormalButton" value="返  回" action="hello?faces-redirect=true"/>
    </h:form>
</body>
</html>

(3)Bean文件
package com.logcd.jsfsun;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="hello")
@SessionScoped
public class HelloWorld implements java.io.Serializable{

	private static final long serialVersionUID = 1684235501594231588L;

	private  String  name = "World";

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

     引入jsf-api.jar和jsf-impl.jar可以运行了!
分享到:
评论

相关推荐

    jsf2.0版本helloworld

    JavaServer Faces (JSF) 是Java平台上的一个用于构建用户界面的MVC(Model-View-Controller)框架。在JSF 2.0版本中,它带来了许多改进和新特性,使得开发更加高效且易于理解。JSF 2.0是J2EE(Java Platform, ...

    Core.JavaServer.Faces.3rd 更新到 jsf 2.0

    《Core.JavaServer.Faces.3rd》更新至JSF 2.0的版本,是针对JavaServer Faces(JSF)框架的一本详细指南,尤其关注其核心编程概念和技术。JSF是一个用于构建企业级Web应用的Java标准组件模型,由Java Community ...

    Mojarra JSF2.0库文件

    **JSF 2.0(JavaServer Faces 2.0)**是Java平台上的一种服务器端的用户界面框架,用于构建富互联网应用程序(Rich Internet Applications,RIA)。它遵循MVC(Model-View-Controller)设计模式,提供了一种声明式的...

    JSF 2.0 (Mojarra 2.0.2-FCS)

    JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。JSF 2.0是一个重要的版本更新,引入了许多改进和新特性,旨在提升开发效率和用户体验。Mojarra是JSF规范的主要...

    JSF2.0源代码

    JavaServer Faces (JSF) 是一个用于构建Web用户界面的Java框架,由Sun Microsystems(现已被Oracle收购)开发并维护。JSF 2.0是该框架的一个重要版本,它带来了许多改进和新特性,提升了开发者的体验和应用性能。在...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版) 1/2

    全面介绍JSF2.0、详述如何使用Ajax,以及按照JSF2.0、的方式构建组件、快速理解众多可以直接运行的代码示例。 作者 作者:(美国)伯恩斯 (Ed Burns) (美国)沙尔克 (Chris Schalk) (美国)格里芬 (Neil Griffin) 译者...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版).part1

    全面介绍JSF2.0、详述如何使用Ajax,以及按照JSF2.0、的方式构建组件、快速理解众多可以直接运行的代码示例。 作者 作者:(美国)伯恩斯 (Ed Burns) (美国)沙尔克 (Chris Schalk) (美国)格里芬 (Neil Griffin) 译者...

    jsf 2.0 api和imp的jar包+源码包+doc

    JavaServer Faces(JSF)是Java平台上用于构建Web应用程序的官方标准MVC(Model-View-Controller)框架。JSF 2.0是其一个重要版本,带来了许多改进和新特性,使得开发更加高效且易于维护。这个压缩包包含了JSF 2.0的...

    jsf 2.0官方参考手册

    **JSF 2.0(JavaServer Faces 2.0)是Java EE 6平台上的一个关键组件,用于构建Web用户界面。它提供了一个模型-视图-控制器(MVC)框架,使得开发人员能够更高效地创建动态、数据驱动的Web应用程序。** **一、JSF...

    JSF2.0实战 - 6、TextBox

    JSF(JavaServer Faces)是Oracle公司提供的一个用于构建Web应用程序的MVC框架,而JSF 2.0版本带来了许多改进和新特性,使开发更加简便高效。 首先,TextBox在JSF中被称为`h:inputText`,它是一个用于收集用户单行...

    jsf2.0实例

    JavaServer Faces(JSF)是Java平台上用于构建Web应用程序的一种模型-视图-控制器(MVC)框架。JSF 2.0是其一个重要版本,引入了许多增强功能,提高了开发效率和用户体验。在本篇中,我们将深入探讨JSF 2.0的核心...

    Jsf2.0 Refrence

    **JSF 2.0(JavaServer Faces 2.0)是Java EE平台中的一个用于构建Web用户界面的组件框架。这个框架允许开发者通过声明式的方式处理用户交互,减轻了编写大量HTML和JavaScript代码的负担。** 在"Jsf2.0 Reference...

    jSF2.0与Spring整合实例+教程

    **JavaServer Faces 2.0 (JSF 2.0) 和 Spring 框架的整合教程** 在当今的企业级Web开发中,JSF 2.0 和 Spring 的结合使用非常常见,因为它们各自提供了独特的优势。JSF 是一个用于构建用户界面的组件模型框架,而 ...

    jsf2.0 tutorial.rar

    **JSF 2.0(JavaServer Faces 2.0)教程详解** JavaServer Faces (JSF) 是Java EE平台中的一个用户界面组件框架,它主要用于构建动态、数据驱动的Web应用程序。JSF 2.0是该框架的一个重要版本,引入了许多改进和新...

    JavaServer Faces 2.0完全参考手册(全)pdf

    这本书《JavaServer Faces 2.0完全参考手册》应该是全面涵盖了JSF 2.0的核心概念、组件、事件处理、数据绑定以及与其他Java EE技术的集成。 1. **JSF架构**:JSF的核心是一个MVC(模型-视图-控制器)框架,其中视图...

    JavaServer Faces 2.0, The Complete Reference源码

    《JavaServer Faces 2.0, The Complete Reference》这本书全面介绍了JSF 2.0框架,提供了详细的指南和实践案例,帮助开发者深入理解和应用这一技术。源代码通常包括书中所讲解的各种示例和实例应用,这对于读者理解...

    JSF 2.0 开发资料

    JavaServer Faces (JSF) 2.0 是 Java 平台上的一种用于构建用户界面的标准组件框架。它作为 Java EE 的一部分,在 JSF 2.0 版本中进行了大量的改进和增强,旨在简化 Web 应用程序的开发流程,提高开发效率,同时保持...

    JSF2.0 开发简介

    JavaServer Faces (JSF) 2.0 是一个重要的里程碑,它显著改善了JSF 1.0 的功能,并吸取了来自开源社区的创新成果。JSF 2.0 的核心目标是简化Web应用程序的开发,通过引入新特性,如注解配置、流线化的导航以及Ajax...

    JavaServer Faces 2.0, The Complete Reference PDF原版高清

    本书《JavaServer Faces 2.0: The Complete Reference》是关于JSF 2.0的全面指南,由Ed Burns、Chris Schalk与Neil Griffin合作编写。以下是基于该书标题、描述及部分内文所提取的关键知识点。 ### 1. JavaServer ...

Global site tag (gtag.js) - Google Analytics