如何向 JSF 输入组件添加占位符属性?

2024-03-03

使用 html5 时,这行代码不应该渲染一个带有占位符文本“fill me”的输入文本字段吗?

<h:inputText placeholder="fill me" />

我没有看到任何占位符文本。我以为所有不是JSF的东西都传递给浏览器渲染了?


我以为所有不是JSF的东西都传递给浏览器渲染了?

因此,这个假设是错误的。未指定 http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/JSF 渲染器会忽略组件属性。

基本上,您有以下选项可以使其正常工作:

  1. 如果您已经使用 JSF 2.2 或更高版本,请将其设置为直通属性 http://docs.oracle.com/javaee/7/tutorial/jsf-facelets009.htm#sthref393.

     <... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
    
     <h:inputText a:placeholder="fill me" />
    

    请注意,我使用的 XML 命名空间前缀为a(“属性”)而不是p如教程中所示,否则它会与默认 XML 命名空间前缀冲突pPrimeFaces 的。

  2. 实现自定义渲染器<h:inputText>其中您显式检查并写入属性。

  3. 实现使用上述自定义渲染器的自定义组件。

  4. 实现一个基于 JS 的解决方案,其中您从 DOM 中获取元素并显式设置属性。

  5. 寻找一个支持这种开箱即用的组件库。PrimeFaces http://primefaces.org例如有一个<p:watermark> http://www.primefaces.org/showcase/ui/misc/watermark.xhtml为此,对于不支持的浏览器,可以使用基于 JS 的优雅降级placeholder输入上的属性。

也可以看看:

  • JSF 不呈现自定义 HTML 标记属性 https://stackoverflow.com/questions/16666472/custom-html-tag-attributes-are-not-rendered-by-jsf
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何向 JSF 输入组件添加占位符属性? 的相关文章

随机推荐