JSF 1.x
??? * Java EE 标准 (JSR 127, 252)
??? * 面向组件的 web框架
??? * 扩展性较好
??? * 有很多厂商工具支持
JSF 2.0
??? * Java EE 6 (JSR 314)的一部分
??? * 减少XML配置
??? * 更好的错误处理机制
??? * Ajax支持
??? * GET请求支持
??? * 更容易开发component
??? * 增加资源resource处理机制
?
- 更好的导航设计 :
<h:commandButton value="Press me!" action="next"/> <navigation-rule> <navigation-case> <from-outcome>next</from-outcome> <to-view-id>/next.jsp</to-view-id> </navigation-case> </navigation-rule>?
<h:commandButton value="Press me!" action="next"/> //自动对应到页面了
- ?受托管Bean采用Annotation标注
<h:inputText value="#{login.name}"/>
?<managed-bean> <managed-bean-name>login</managed-bean> <managed-bean-class>com.corejsf.Login</managed-bean> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
?@ManagedBean @SessionScoped public class Login { ... }
- 采用Facelets作为界面层
??? * Facelets是第三方扩展 (Jacob Hookom)
??? * 成为标准的一部分
??? * JSF中首选视图Handler
??? * 减少JSP的混乱和复杂
??? * 更好的错误处理机制
??? * Page composition - 可以作为书签的URL
??? * 在JSF 1.x时代,一切都是POST
??? * 浏览器只能回退一步
??? * 不可以另存为书签
??? * JSF 2.x 支持Get操作
??? * 增加新标签 h:button, h:link
??? * 视图参数
????????? o 但请求进入时绑定到beans
????????? o 可以绑定到下一个请求? <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>
?
?
- 增加组合组件概念
??? * 有简单组件构成
??? * 可以绑定validators, listeners<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>
? - 比较方便地使用AJAX:
<h:commandButton value="Update"> <f:ajax execute="input1 input2" render="output1"/> </h:commandButton>
???
- 资源加载
????????? o 标准resources directory
????????? o h:graphicImage, h:outputStylesheet, h:outputScript的 library, name attributes
??????????? <h:outputStylesheet library="css" name="styles.css" />
????????? o 改善i18n
??? * 增加新的托管bean范围
????????? o View scope
????????? o Flash
??? * 14种新的时间
????????? o 最常用的包括: preRenderView, postValidate
??????????? <f:event type="postValidate" listener="#{user.validate}"/>