3

不幸的是,没有工作教程可以将 Eclipse (KEPLER) JSF 2.0 项目更新到 JSF 2.2。是应该完成这个更新还是应该创建一个新项目(并导入所有文件)?

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

当我将 faces.xml 标头更改为:

<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(在首选项中),但服务器只是打印错误并且不起作用......

4

2 回答 2

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。from 的返回类型getValue() 必须是 ValueExpression,但 getValue(“type”) 除外。from 的返回类型 getValue(“type”)必须是 Class。如果为 的 type 属性指定的值<cc:attribute/> 不能转换为实际的 Class,TagAttributeException则必须抛出 a,包括构造函数中的Tagand 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>    
    

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

    <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"

您可以在下面获取您的规范副本。查看/Preface/Changes between 2.1。和 2.2。/向后兼容以前的版本

于 2013-11-04T18:16:00.743 回答
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">`

然后:选择您的 Web 项目,右键单击 > 属性 > 项目方面 > 取消选择 jsf 版本 > 按确定。

最后:右键单击您的项目而不是 maven > update project ...

重启你的服务器...

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

于 2017-05-07T10:09:18.500 回答