【问题标题】:How do I stop EL expressions from being evaluated in non-rendered JSF components?如何阻止 EL 表达式在未呈现的 JSF 组件中进行评估?
【发布时间】:2011-05-19 21:57:48
【问题描述】:

编辑:没关系!

我正在将我的项目从带有 Facelets 的 JSF 1.2 切换到带有 Facelets 的 JSF 2。看起来,在 JSF 2 中,未呈现的组件中的 EL 表达式被评估。在 JSF 1.2 中似乎并非如此。所以你会遇到这样的问题:

<h:panelGroup rendered="#{not empty myBean.myPojo}">
    <h:outputText value="#{myBean.myPojo.pojoProperty}" />
</h:panelGroup>

如果 myBean.myPojo 为 null,则导致 NullPointerException,而我的项目的 JSF 1.2 版本中没有。对于这些情况,另一种方法是使用 c:if(而不是 h:panelGroup rendering="..."),但这有其自身的问题。我做错了什么吗?有一些配置吗?谢谢!

【问题讨论】:

  • 在特定的代码示例中,它不应该导致 NPE。请张贴实际代码。或者如果确实如此,那么它是 EL 中的一个错误。 EL 旨在实现 nullsafe。然后,您应该提及您正在使用哪个 EL 实现(servletcontainer)。
  • 你是对的;我发现了一个不相关的错误导致了这种情况。谢谢!

标签: java jsf jsf-2 facelets nullpointerexception


【解决方案1】:

如果仅此而已,那么这似乎是底层 EL 实现中的一个错误。我建议检查是否有新版本,是否以前报告过此问题,如果没有,请报告! :)

【讨论】:

    猜你喜欢
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2012-12-27
    相关资源
    最近更新 更多