您的位置:首页 > Web前端 > JavaScript

jsf1.2 和 jsf2.0 的区别

2013-12-22 21:18 393 查看
在这里给大家总结一下jsf1.2和jsf2.0的区别:

1 比较显著的特点是Bean可以通过注解的方式来配置,少写很多xml配置文件。在jsf1.2中Bean都是通过配置文件face-config.xml声明的,而在jsf2.0里Bean可以直接通过注解@MangeBean,@sessionScoped来声明。

2 在jsf1.2中创建页面的时候一般页面的格式是。jsp或html页面,在jsf2.0中推荐使用.xhtml在创建页面。如果在页面中用到那种jsf的标签只要在页面的开通声明标签的命名空间就可以了。例如:

在jsf1.2中标签的声明是这样的

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>


在jsf2.0中标签的声明变成了这个样子

<html xmlns=”http://www.w3.org/1999/xhtml”
xmlns:f=”http://java.sun.com/jsf/core”
xmlns:h=”http://java.sun.com/jsf/html”>


3 在jsf2.0中导航规则也变的更加简洁。在jsf1.2中到跳转那个页面是必须通过写在faces-config.xml 中的 navigation rule来进行跳转的,在jsf2.0中你可以直接通过<h:commandButton>的 action 属性后边加上要跳转的页面的名字来进行跳转的。当然负责的导航规则也是可以通过navigation
rule来进行的。可以作为书签的URL 在JSF 1.x时代,一切都是POST,浏览器只能回退一步,不可以另存为书签,JSF 2.x 支持Get操作,增加新标签 h:button, h:link,视图参数,但请求进入时绑定到beans, 可以绑定到下一个请求.


<f:metadata>
<f:viewParam name="q" value="#{quizBean.currentProblem}" />
<f:viewParam name="score" value="#{quizBean.score}" />
</f:metadata>

<h:link outcome="#{quizBean.skipOutcome}" value="Skip"includeViewParams="true">
<f:param name="q" value="#{quizBean.currentProblem + 1}" />
</h:link>


4 在jsf2.0中新加了创建聚合标签的功能,可以把以有的标签组合到一块创建一个新的jsf标签。通过这个特性,用户可以通过聚合组件重构已有的视图,使它成为一个可以重用的聚合标签,并且可以为聚合标签设置各种属性。

代码示例:


<composite:interface>
<composite:actionSource name="form:loginAction"/>
...
</composite:interface>
<composite:implementation>
<h:form...>
...
<h:commandButton id="loginAction"
value="Login" action="welcome"/>
</h:form>
</composite:implementation>


5 对Ajax的完善。在jsf1.2中已经开始有对Ajax框架式的实现,他主要是通过<a4j:....>标签来实现的,而<a4j:....>是richsfaces中的东西,所以jsf1.2对Ajax的支持并不完善,而在jsf2.0中jsf推出了自己的一套Ajax标签,<f:ajax>,比较方便的使用Ajax。

示例如下:

<h:commandButton value="Update">
<f:ajax execute="input1 input2" render="output1"/>
</h:commandButton>


6 在jsf2.0中拥有一个核心错误处理器,它汇集了几乎所有的报错,所以用户可以jsf组件很好的构造一个特定的jsf错误页。

7 在jsf1.2中两次请求之间会浪费大量的内存空间,而在jsf2.0中通过优化标签实现的api(flash scope)大大减少了内存的浪费,当然这些在我们不接触源码的情况下是看不到的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: