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

时间:2013-11-04 17:02:49

标签: 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">

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

2 个答案:

答案 0 :(得分:11)

来自JSF 2.2。参考实施手册

  

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

     

由于规范的先前版本中存在错误,现在将无声地吞下异常   冒泡到异常处理程序。可能需要修改依赖于此错误行为的代码   解决此问题的原因。

还有:

  

<composite:attribute/>上的任何其他属性都作为可从中访问的属性公开   getValue()上的attributeNames()PropertyDescriptor方法。来自getValue()的返回类型   必须是ValueExpression,getValue(“type”)除外。来自的返回类型   getValue(“type”)必须是Class。如果为<cc:attribute/>的type属性指定的值   无法转换为实际的类,必须抛出TagAttributeException,包括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. 根据您的评论: JSF2.0中以下构造中的preRenderView事件类型:

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

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

    <f:metadata>
        <f:viewAction action="#{viewActionManagedBean.validateUser()}"/>
    </f:metadata>
    

    此标记还支持在请求生命周期的特定阶段使用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>
    

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

  3. 中可用

    您可以在下面获得规范的副本。查看2.1之间的 / Preface / Changes。和2.2。 /向后兼容早期版本

答案 1 :(得分:0)

只需将faces-config的原型替换为:

`<?xml version="1.0" encoding="UTF-8"?>
 <faces-config 
 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
 http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
 version="2.2">`

然后:选择您的网络项目,右键单击&gt;物业&gt;项目方面&gt;取消选择jsf版本&gt;按好。

最终:右键点击你的项目而不是maven&gt;更新项目...

重新启动服务器......

我希望它有所帮助,它对我有用