动态更新primefaces水印消息

动态更新primefaces水印消息,primefaces,Primefaces,我正在尝试根据jsf selectOneMenu中选择的值动态更新水印消息。用于水印组件的id为“waterMark1”。 水印组件链接到输入文本字段。 在valueChange上,我收到一条错误消息,无法找到id waterMarkID1。 我尝试根据selectOneMenu选择更新outputText,并将id保留为WatermarkID1。它可以与outputText一起使用 是否有任何方法根据bean值显示水印消息。如有任何帮助,将不胜感激 <h:selectOneMenu va

我正在尝试根据jsf selectOneMenu中选择的值动态更新水印消息。用于水印组件的id为“waterMark1”。 水印组件链接到输入文本字段。 在valueChange上,我收到一条错误消息,无法找到id waterMarkID1。 我尝试根据selectOneMenu选择更新outputText,并将id保留为WatermarkID1。它可以与outputText一起使用

是否有任何方法根据bean值显示水印消息。如有任何帮助,将不胜感激

<h:selectOneMenu value="#{RequestBean.searchonType}" valueChangeListener="# {RequestBean.getValidateMsg}" id="searchUser">
                                <f:selectItems value="#{RequestBean.searchonTypeList}" />
                                <f:ajax event="change" update="waterMarkID1"  render="waterMarkID1"/>
                          </h:selectOneMenu>


                          <h:inputText id="searchTxt" styleClass="text_small" size="50" value="#{RequestBean.searchTxt}"/>

                          <p:watermark id="waterMarkID1" for="searchTxt" value="#{RequestBean.waterMarkID}"/>

您似乎无法直接更新
p:watermark
组件。但是,更新包含该组件的容器也会更新水印消息:

<p:panel id="panel1">
    <h:selectOneMenu value="#{RequestBean.searchonType}" valueChangeListener="# {RequestBean.getValidateMsg}" id="searchUser">
        <f:selectItems value="#{RequestBean.searchonTypeList}" />
        <f:ajax event="change" render="panel1"/>
    </h:selectOneMenu>


    <h:inputText id="searchTxt" styleClass="text_small" size="50" value="#{RequestBean.searchTxt}"/>
    <p:watermark id="waterMarkID1" for="searchTxt" value="#{RequestBean.waterMarkID}"/>
</panel>


请注意,您可以将
p:panel
中包含的元素缩减为
h:inputText
p:watermark
。关键是要更新容器,而不是水印组件。

似乎无法直接更新
p:watermark
组件。但是,更新包含该组件的容器也会更新水印消息:

<p:panel id="panel1">
    <h:selectOneMenu value="#{RequestBean.searchonType}" valueChangeListener="# {RequestBean.getValidateMsg}" id="searchUser">
        <f:selectItems value="#{RequestBean.searchonTypeList}" />
        <f:ajax event="change" render="panel1"/>
    </h:selectOneMenu>


    <h:inputText id="searchTxt" styleClass="text_small" size="50" value="#{RequestBean.searchTxt}"/>
    <p:watermark id="waterMarkID1" for="searchTxt" value="#{RequestBean.waterMarkID}"/>
</panel>


请注意,您可以将
p:panel
中包含的元素缩减为
h:inputText
p:watermark
。关键是更新容器,而不是水印组件。

我不建议更新包含水印的容器。在某些情况下,您可能必须更新整个表单组件,如果您从表单内部更新表单组件,您将陷入无限循环。 您可以通过将水印包含在中而不渲染面板来绕过此问题

<p:outputPanel id="watermark"  style="display:block">
     <p:watermark/>
</p:outputPanel>


然后只需更新outputPanel。

我不建议更新包含水印的容器。在某些情况下,您可能必须更新整个表单组件,如果您从表单内部更新表单组件,您将陷入无限循环。 您可以通过将水印包含在中而不渲染面板来绕过此问题

<p:outputPanel id="watermark"  style="display:block">
     <p:watermark/>
</p:outputPanel>


然后只需更新outputPanel。

水印组件是否位于表单中?如果是这样,您可能必须在id前面加上
::waterMarkID1
或类似的前缀。如果您在Firebug(或类似软件)中查看实际生成的id,或者仅通过浏览器中的“查看源”查看id,可能也会有所帮助。水印组件是否位于表单中?如果是这样,您可能必须在id前面加上
::waterMarkID1
或类似的前缀。如果您在Firebug(或类似软件)中查看实际生成的id,或者仅通过浏览器中的“查看源代码”,这可能也会有所帮助。