使用 html5 时,这行代码不应该渲染一个带有占位符文本“fill me”的输入文本字段吗?
<h:inputText placeholder="fill me" />
我没有看到任何占位符文本。我以为所有不是JSF的东西都传递给浏览器渲染了?
我以为所有不是JSF的东西都传递给浏览器渲染了?
因此,这个假设是错误的。未指定 http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/JSF 渲染器会忽略组件属性。
基本上,您有以下选项可以使其正常工作:
-
如果您已经使用 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 命名空间前缀冲突p
PrimeFaces 的。
-
实现自定义渲染器<h:inputText>
其中您显式检查并写入属性。
-
实现使用上述自定义渲染器的自定义组件。
-
实现一个基于 JS 的解决方案,其中您从 DOM 中获取元素并显式设置属性。
-
寻找一个支持这种开箱即用的组件库。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(使用前将#替换为@)