【发布时间】:2015-10-14 11:19:58
【问题描述】:
我们的应用程序在 WebSphere 8.5 上使用 JSF (MyFaces, Trinidad) 1.2 运行。我们正在将其升级到 JSF 2.1。我在 JSF 2.1 中遇到以下异常
JSPX 代码:#{loginBackingBean.switchSkin}
Java 代码:public String switchSkin() {...} - 这是一种方法。
原因:javax.el.ELException:/header.jspx:在类型 com.LoginBackingBean 上找不到属性“switchSkin” 在 org.apache.myfaces.view.facelets.compiler.AttributeInstruction.write(AttributeInstruction.java:55) 在 org.apache.myfaces.view.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:46)
000001ba ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper 服务 SRVE0014E:未捕获的服务()异常根本原因面临:javax.servlet.ServletException:/header.jspx:在类型 com 上找不到属性“switchSkin”。登录BackingBean 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:229) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
注意: JSF 1.2 和 2.0不会出现同样的异常。
请帮我解决这个问题。
【问题讨论】:
-
您是否将 Trinidad 升级到 JSF 2.x 兼容版本?
-
以及如何/在哪里/应该调用它?
-
@Kukeltje:堆栈告诉我们正在编写一个普通的 XML/HTML 元素属性,就像
<xxx attr="#{bean.action}">一样。如果<xxx>应该是一个JSF 组件,这反过来表明它没有被识别为这样。鉴于 OP 正在使用 JSPX 并且 JSF 2.0 开始以与 Facelets 相同的方式对待它们,并且 OP 从 JSF 1.x 迁移,这反过来表明 OP 没有使用 JSF 2.0 / Facelets 兼容的标记库,而只使用了 JSF 1.x/JSP 一。解决方案是将该组件库升级到与 JSF 2.x 兼容的库,或者将视图技术从 JSPX 降级到 JSP。 -
非常好。好久没用jsf1了。但我想看看代码。由于奇怪的原因 PrimeFaces 未完全/正确部署时,我遇到了类似的错误。通常应该调用的动作被 facelets 解释为 getter
-
@BalusC 抱歉延迟回复。我已经将 Facelets 从 1.X 更新到 2.X,但我没有更新 XMLNS,因此,我得到了这些错误。我通过为 jstl 更正 XMLNS 解决了这个问题。非常感谢。
http://java.sun.com/jstl/core至:http://java.sun.com/jsp/jstl/core