【问题标题】:rendered in JSF with method parameter使用方法参数在 JSF 中呈现
【发布时间】: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() 没有接收到任何参数,它可以工作。

【问题讨论】:

  • 错误非常明显。 seguridad bean(或请求/会话/应用程序属性)没有 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')}

标签: java jsf


【解决方案1】:

像这样改变你的 XHTML...

     <h:outputText value = "The Producers"
   rendered = "#{seguridad.rol('administrator')}" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多