InputText组件中的默认文本(占位符)

时间:2013-08-14 12:43:47

标签: jquery jsf jsf-2 primefaces placeholder

enter image description here

我想在JSF / Primefaces inputText 组件中显示默认的信息性文本。

  • 当用户单击“文本”字段时,此文本将消失。
  • 当他点击外面而没有输入任何内容时出现。
  • 如果用户提交的表单没有任何值,则不应将此默认值设置为Bean的属性。

我知道在ManagedBean中将默认值设置为BeanProperty会起作用,但我不希望这样。
如果可能,请建议任何JQuery调整。
如果此问题是重复,请将我重定向到问题。

1 个答案:

答案 0 :(得分:14)

Primefaces 在其最新版本中提供placeholder属性,您可以将其用于p:inputText。此外,还有一个p:watermark组件,可为旧版浏览器兼容性创建基于JS的解决方案。因此,您无需在支持bean中设置默认值。只需使用以下解决方案之一:

<h:outputLabel value="Search: "/>  
<p:inputText id="search_input_id" value="#{watermarkBean.keyword}" 
    required="true" label="Keyword" placeholder="search" />  

对于旧版浏览器:

<h:outputLabel value="Search: "/>  
<p:inputText id="search_input_id" value="#{watermarkBean.keyword}" 
    required="true" label="Keyword" />  
<p:watermark for="search_input_id" value="search" />

此外,如果使用 JSF 2.2 ,您可以使用其passthrough属性。在页面中添加xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"命名空间,您可以通过以下方式实现JSF h:inputTextPrimefaces p:inputText

<h:inputText value="#{watermarkBean.keyword}"
    pt:placeholder="search" />

使用TagHandler将其包装到标记中:

<h:inputText value="#{watermarkBean.keyword}">
    <f:passThroughAttribute name="placeholder"
        value="search"/>
</h:inputText>

使用placeholder属性创建HTML 5 based输入:

<input placeholder="search">