【问题标题】:JSF 2.0 strips out needed HTML5 attributes [duplicate]JSF 2.0 去除了所需的 HTML5 属性 [重复]
【发布时间】:2011-10-03 18:49:10
【问题描述】:

我与一个从事前端开发的 JSF 团队合作。我们正在输出一个 INPUT 字段,我需要将 placeholder 和一些 data- 属性包含到呈现的标签中。然而,JSF 正在剥离这些。我对 JSF 的了解不足以对 JSF 团队有多大帮助,但我想我至少可以四处打听。

我们使用的是旧版本的 JSF,但升级到了 2.0,因为它似乎支持 HTML5。不是这样吗?有没有一种已知的方法来解决这个问题?

【问题讨论】:

    标签: html jsf


    【解决方案1】:

    JSF 并没有完全去除它们。它只是忽略它们,因为它们不在相关组件的支持/已知属性中。例如 <h:inputText>(默认呈现 HTML <input type="text"> 标记),您可以在 view declaration language (VDL) documentation 中找到所有支持的属性。

    要克服这个问题,您需要创建一个custom component,或者更好的是只创建一个custom renderer,它会覆盖标准的<h:inputText> 渲染器并考虑自定义属性。

    【讨论】:

    • 谢谢,巴鲁斯。这正是我们要走的路线。为我们所有的标签编写我们自己的渲染器。 Tedius,但应该能把我们带到那里。
    【解决方案2】:

    如果您使用 Facelet,您可以简单地在 HTML5 组件中编写 EL 表达式。

    例如视频:

    <video name="myVideo" poster="#{bean.poster}" > 
        <source src="#{bean.vidoeSrc}" type='video/ogg; codecs=&quot;theora, vorbis&quot;' /> 
    </video>
    

    这样您就可以使用任何 HTML5 组件 - 并且绑定到 JSF 就像其他 JSF 组件一样。您也可以在 HTML 的 input 元素中使用相同的想法。

    已编辑

    对于占位符,您可以就地使用PrimeFaces。查看他们的组件了解更多详情。

    【讨论】:

    • 您能再解释一下吗?我不确定EL是什么。我们的特殊问题是让data-*placeholder 属性传递到HTML。看起来我们将不得不编写自己的渲染器。
    • @DA: EL(表达语言)是那些#{} 的东西。另见stackoverflow.com/tags/el/info 毕竟,我相信 Odelya 将 HTML5 attributes 与 HTML5 tags 混淆了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2016-08-30
    • 2012-12-25
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2015-10-12
    相关资源
    最近更新 更多