将JSF 2.0项目更新到2.2的手册

Nik*_*iko 3 jsf jsf-2.2

遗憾的是,没有工作教程将Eclipse(KEPLER)JSF 2.0项目更新为JSF 2.2.是应该完成此更新还是应该创建一个新项目(并导入所有文件)?

正确更新已使用的JSF版本并清理的步骤是什么?

当我将faces.xml标头更改为:时,我只是收到错误(从FactoryNotFound到StartupServletContextListener问题)

<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
Run Code Online (Sandbox Code Playgroud)

我另外更新了库到Majorra 2.2.0(JSF 2.2)和动态web项目到3.0和java到1.7(在首选项中),但是服务器只是打印错误而且不起作用......

kol*_*sus 11

来自JSF 2.2.参考实施手册

Faces 2.2向后兼容Faces 2.1和2.0.这意味着开发使用Faces 2.1或2.0运行的Web应用程序在使用Faces 2.2运行时不需要任何修改

由于规范的先前版本中的错误,异常被静默吞噬,现在将冒泡到异常处理程序.可能需要修改依赖于此错误行为的代码以解决此问题.

并且:

任何其他属性<composite:attribute/>都作为可从getValue()和attributeNames()方法访问的属性公开 PropertyDescriptor.返回类型getValue() 必须是ValueExpression,但getValue("type")除外.返回类型 getValue(“type”)必须是Class.如果为type属性指定的值<cc:attribute/> 无法转换为实际的类,则TagAttributeException必须抛出a,包括构造函数中的Tag和 TagAttribute实例.

结论:JSF2.1之间的破损很小.和2.2.

编辑:JSF2.2中的一些新东西:

  1. 新命名空间: xmlns:f="http://xmlns.jcp.org/jsf/core"可以替换xmlns:f="http://java.sun.com/jsf/core"也可以

    xmlns:h="http://xmlns.jcp.org/jsf/html" 可以取代 xmlns:h="http://java.sun.com/jsf/html"

  2. 根据您的评论:preRenderViewJSF2.0中以下构造的事件类型:

    <f:metadata>
       <f:event type="preRenderView" listener="#{viewActionManagedBean.validateUser()}"/>
    </f:metadata>    
    
    Run Code Online (Sandbox Code Playgroud)

    可以使用<f:viewAction/>JSF2.2中的以下全新标记替换:

    <f:metadata>
        <f:viewAction action="#{viewActionManagedBean.validateUser()}"/>
    </f:metadata>
    
    Run Code Online (Sandbox Code Playgroud)

    此标记还支持在具有该phase属性的请求生命周期的特定阶段期间执行托管bean方法.有效选项是

    • RESTORE_VIEW(还原视图)
    • APPLY_REQUEST_VALUES(应用请求值)
    • PROCESS_VALIDATIONS(流程验证)
    • UPDATE_MODEL_VALUES(更新模型值)
    • INVOKE_APPLICATION(调用应用程序)
    • RENDER_RESPONSE(渲染响应)

    标记还支持if定义将在其上运行操​​作的布尔条件的属性.以下面的例子为例:

    <f:metadata>
       <f:viewAction action="#{viewActionManagedBean.validateUser()}" if="#{viewActionManagedBean.verifyCondition}" phase="APPLY_REQUEST_VALUES"/>
    </f:metadata>
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,此标记仅在新名称空间中可用 xmlns:f="http://xmlns.jcp.org/jsf/core"

您可以在下面获得规范的副本.查看/前言/ 2.1之间的变化.和2.2./向后兼容以前的版本