【发布时间】:2011-10-03 18:49:10
【问题描述】:
我与一个从事前端开发的 JSF 团队合作。我们正在输出一个 INPUT 字段,我需要将 placeholder 和一些 data- 属性包含到呈现的标签中。然而,JSF 正在剥离这些。我对 JSF 的了解不足以对 JSF 团队有多大帮助,但我想我至少可以四处打听。
我们使用的是旧版本的 JSF,但升级到了 2.0,因为它似乎支持 HTML5。不是这样吗?有没有一种已知的方法来解决这个问题?
【问题讨论】:
我与一个从事前端开发的 JSF 团队合作。我们正在输出一个 INPUT 字段,我需要将 placeholder 和一些 data- 属性包含到呈现的标签中。然而,JSF 正在剥离这些。我对 JSF 的了解不足以对 JSF 团队有多大帮助,但我想我至少可以四处打听。
我们使用的是旧版本的 JSF,但升级到了 2.0,因为它似乎支持 HTML5。不是这样吗?有没有一种已知的方法来解决这个问题?
【问题讨论】:
JSF 并没有完全去除它们。它只是忽略它们,因为它们不在相关组件的支持/已知属性中。例如 <h:inputText>(默认呈现 HTML <input type="text"> 标记),您可以在 view declaration language (VDL) documentation 中找到所有支持的属性。
要克服这个问题,您需要创建一个custom component,或者更好的是只创建一个custom renderer,它会覆盖标准的<h:inputText> 渲染器并考虑自定义属性。
【讨论】:
如果您使用 Facelet,您可以简单地在 HTML5 组件中编写 EL 表达式。
例如视频:
<video name="myVideo" poster="#{bean.poster}" >
<source src="#{bean.vidoeSrc}" type='video/ogg; codecs="theora, vorbis"' />
</video>
这样您就可以使用任何 HTML5 组件 - 并且绑定到 JSF 就像其他 JSF 组件一样。您也可以在 HTML 的 input 元素中使用相同的想法。
已编辑
对于占位符,您可以就地使用PrimeFaces。查看他们的组件了解更多详情。
【讨论】:
data-* 和placeholder 属性传递到HTML。看起来我们将不得不编写自己的渲染器。
#{} 的东西。另见stackoverflow.com/tags/el/info 毕竟,我相信 Odelya 将 HTML5 attributes 与 HTML5 tags 混淆了。