【问题标题】:JSF: Custom attributes don't work with EL-expression?JSF:自定义属性不适用于 EL 表达式?
【发布时间】:2012-07-24 01:13:53
【问题描述】:

我想在标准 JSF 组件中使用自定义属性。当自定义属性的值为 EL 表达式时,使用或者更确切地说引入 ResponseWriterWrapper,如下所述:Adding custom attribute (HTML5) support to JSF 2.0 UIInput component

我为组件 t:div 引入了一个自定义渲染器类,并使用我的 ResponseWriterWrapper 来渲染自定义属性。所以写的时候

<t:div data-role="collapsible" data-collapsed="false">
    ...
</t:div>

一切正常!

但是下面的代码不起作用:

<t:div data-role="collapsible" data-collapsed="#{false}">
    ...
</t:div>

更详细地说,属性“data-collapsed”没有被渲染,因为它不是组件属性列表的一部分。当组件传递给 encodeBegin 方法时,我可以看到这一点。

是否有人知道这是什么原因以及如何通过解决方法或其他方式解决此问题?

提前致谢!

【问题讨论】:

  • 你能告诉我们 data-collapsed 将用于什么吗?可能有某种解决方法。
  • 感谢您的回复。该示例仅旨在以简单的方式显示问题。在这种特定情况下,解决方法是
    我阅读了很多 JSF 组件文档,并且阅读了很多关于“必须解析为 的 EL 表达式”的内容。我对此不是很了解,但是,执行解析为某种数据类型的 EL 表达式的方法应该是什么?
  • 数据类型由组件类中的getter/setter方法定义。检查这个例子:blog.evolutionarydawn.com/2009/06/11/custom-jsf-component-12 但我看不到你的意思,你能解释一下吗?

标签: html jsf jakarta-ee


【解决方案1】:

对于要在 JSF 中呈现的自定义属性,它们应该作为 Passthrough 属性传递,这在 JSF2.2 中是可能的,而不是根据我的知识在 2.0 中。

如果您包含以下命名空间 (jsf 2.2):

      xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"

并定义&lt;t:div data-role="collapsible" data-collapsed="#{false}"&gt;它将在您的JSF组件中呈现数据折叠的属性。

如果可以升级 jsf,这是您的一个选择。

【讨论】:

  • 答案被否决的任何原因?想知道,以便我将来可以学习。
猜你喜欢
相关资源
最近更新 更多
热门标签