占位符在PrimeFaces p:inputText中不起作用

时间:2016-08-26 03:34:22

标签: jsf-2 primefaces

我正在尝试使用PrimeFaces inputText文本框来获取用户输入。即使我添加占位符属性,文本也不会出现在文本框中。我需要包含哪些库吗?下面是我的jsf页面。

 <ui:composition template="/template/master-layout.xhtml"
            xmlns:ui="http://java.sun.com/jsf/facelets"
            xmlns:f="http://java.sun.com/jsf/core"
            xmlns:h="http://java.sun.com/jsf/html"
            xmlns:p="http://primefaces.org/ui">
     <ui:define name="head">  test header </ui:define>

    <ui:define name="meta">
        <f:metadata>
            <f:event type="preRenderView" listener="#{HomeBean.initPage}"></f:event>
        </f:metadata>
    </ui:define>
      <ui:define name="mainContainer">
        <div class="row">
          <div class="col-sm-12">
            <p:inputText placeholder="Your ID" styleClass="form-control service-input-border" maxlength="20" id="Id"
               value="#{homeBean.Id}"></p:inputText>
         </div>
        </div>
    </ui:define>
</ui:composition>

2 个答案:

答案 0 :(得分:1)

Apostolos答案很好,但我更喜欢使用passthrough属性。如果您使用的是JSF&gt; = JSF 2.2 ,则可以使用

只需使用新的namaspace http://xmlns.jcp.org/jsf/passthrough并使用您喜欢的任何HTML属性(例如,任何未添加到输入/组件的HTML属性)。在您的情况下,它将是placeholder

<ui:composition template="/template/master-layout.xhtml"
        xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
        xmlns:f="http://xmlns.jcp.org/jsf/core"
        xmlns:h="http://xmlns.jcp.org/jsf/html"
        xmlns:p="http://primefaces.org/ui"
        xmlns:pt="http://xmlns.jcp.org/jsf/passthrough">    

<!-- ... -->

<p:inputText pt:placeholder="Your ID" styleClass="form-control service-input-border"
    maxlength="20" id="Id" value="#{homeBean.Id}" />

您可以详细了解直通属性herehere

答案 1 :(得分:0)

您应该使用watermark标记来显示占位符。

<p:inputText styleClass="form-control service-input-border" maxlength="20" id="Id" value="#{homeBean.Id}"></p:inputText>
<p:watermark for="Id" value="Your ID" id="watermark" />

另见showcase