在使用html5时,这行代码不应该使用占位符文本“填充我”来呈现inputtext字段吗?
<h:inputText placeholder="fill me" />
我没有看到任何占位符文字。我认为那些不是JSF的东西都被传递给浏览器进行渲染了吗?
答案 0 :(得分:64)
我认为那些不是JSF的东西都传递给了浏览器进行渲染?
因此这个假设是错误的。 JSF渲染器会忽略Unspecified个组件属性。
您基本上有以下选项可以让它发挥作用:
如果您已使用JSF 2.2或更高版本,请将其设置为passthrough attribute。
<... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
<h:inputText a:placeholder="fill me" />
请注意,我使用了a
(“attribute”)的XML名称空间前缀而不是p
,如教程中所示,否则它会与默认的XML名称空间前缀p
冲突PrimeFaces。
为<h:inputText>
实施自定义渲染器,其中您明确检查并编写属性。
实现使用上述自定义渲染器的自定义组件。
实现基于JS的解决方案,您可以从DOM中获取元素并明确设置属性。
查找一个支持此功能的组件库。例如PrimeFaces为此目的有一个<p:watermark>
,基于JS的浏览器优雅降级,不支持输入的placeholder
属性。
寻找一个渲染工具包,为标准组件集添加HTML5支持。例如OmniFaces为此目的有一个Html5RenderKit。
答案 1 :(得分:21)
如果使用Primefaces和JSF 2.0+,您可以使用placeholder
属性或p:watermark
实现它,或者当JSF 2.2可用时,您可以使用pt:placeholder
属性。
<强> Primefaces 强>
<p:inputText id="search_input_id" value="#{watermarkBean.keyword}"
required="true" label="Keyword" placeholder="fill me" />
传统浏览器支持(添加JS解决方案):
<p:inputText id="search_input_id" value="#{watermarkBean.keyword}"
required="true" label="Keyword" />
<p:watermark for="search_input_id" value="fill me" />
JSF 2.2(不含PF)
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:pt="http://xmlns.jcp.org/jsf/passthrough">
<h:head>
</h:head>
<h:body>
<h:inputText value="#{bean.value}" pt:placeholder="fill me"/>
</h:body>
</html>
基本上生成HTML 5
<input placeholder="fill me" />
查看this回答。
答案 2 :(得分:9)
使用JSF 2.2,你可以通过这样的未指定属性:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://xmlns.jcp.org/jsf/passthrough"
>
<h:inputText p:placeholder="fill me"></h:inputText>
答案 3 :(得分:7)
如果您使用 RichFaces ,从版本4.3开始,您可以使用标记“rich:placeholder”来实现此目的,如here所示。基本上是:
<h:inputText id="myInput">
<rich:placeholder value="My placeholder text"></rich:placeholder>
</h:inputText>
答案 4 :(得分:2)
试试这个
<h:inputText id="name" value="#{login.userId}" class="aux1" />
<h:inputSecret id="password" value="#{login.password}" redisplay="true" class="aux2" autocomplete="off" />
<script>
$('.aux1').attr('placeholder', 'Introducir Usuario');
$('.aux2').attr('placeholder', 'Introducir Contraseña');
</script>
使用jQuery,这对我来说很合适。
答案 5 :(得分:1)
这是非常容易和浏览器无关的代码,如BaluSc所说,
在primefaces中,使用p:watermark
来获取所需的功能。
官方演示是HERE
答案 6 :(得分:0)
使用primeface 4.0。此版本下的版本不支持占位符属性。
使用名称空间xmlns:pt="http://java.sun.com/jsf/passthrough"
。
p:inputTextarea id="textAreaValue" pt:placeholder="your text"
请勿在{{1}}。
答案 7 :(得分:0)
使用占位符文本呈现输入字段的最简单方法是使用基本输入标记
示例:
<input type="text" placeholder="Fill me" value="#{EL}"/>
注意:您不必包含任何名称空间
答案 8 :(得分:-1)
<h:head>
</h:head>
<h:body>
<h:inputText value="#{bean.value}" placeholder="fill me"/>
</h:body>
这适合我,试试吧!