【发布时间】:2013-11-02 07:38:24
【问题描述】:
我正在创建一个使用 JSF 的 xhtml。我有一个名为 SeguridadControllerBean.java 的类,其中包含一个方法 isRol(字符串角色) 我想通过传递参数从 XHTML 调用此方法,如下所示:
<h:outputText value = "The Producers"
rendered = "#{seguridad.rol ['administrator']}" />
但问题是,当您到达此屏幕时,它会告诉我以下信息:
javax.faces.el.PropertyNotFoundException: /WEB-INF/view/template.xhtml @18,54 rendered="#{seguridad.rol['administrator']}": Bean: org.javassist.tmp.java.lang.Object_$$_javassist_559, property: rol
现在,如果我删除参数并且方法 isRol() 没有接收到任何参数,它可以工作。
【问题讨论】:
-
错误非常明显。
seguridadbean(或请求/会话/应用程序属性)没有rol属性。看起来javassist生成的代理对象没有加载rol字段,因此产生了这个异常。或者rol属性不是地图=\ -
那么..我该怎么做才能加载方法 rol??
-
但是..角色是一种方法..不是属性!
-
再次,这就是问题所在。 EL 解析器期望
seguridad.rol作为seguridad类类型中的一个字段,其各自的 getter 遵循 JavaBean 约定。既然不是,它会抛出你正在阅读的异常。解决问题请参考stackoverflow.com/q/10726462/1065197 -
我看到了解决方案,现在我将其称为如下:rendered = "# {rendered = seguridad.isRol ('administrator')}" 但我错过了另一个错误:/WEB-INF/view/ template.xhtml @ 18,56 渲染 = "# {seguridad.isRol ('administrator')}" 错误解析:# {seguridad.isRol ('administrator')}