遗憾的是,没有可用的教程将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(在首选项中),但是服务器只是打印错误而且不起作用...
答案 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中的一些新内容:
新命名空间:
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"
根据您的评论:
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方法。有效选项是
该标记还支持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"
您可以在下面获得规范的副本。查看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;更新项目...
重新启动服务器......
我希望它有所帮助,它对我有用