动态更新primefaces水印消息

时间:2012-11-12 13:19:19

标签: primefaces

我正在尝试根据jsf selectOneMenu中的选定值动态更新水印消息。用于水印组件的id是“waterMark1”。 水印组件链接到输入文本字段。 在valueChange上,我收到一条错误消息,指出无法找到id waterMarkID1。 我尝试根据selectOneMenu选择更新outputText并将id保持为WatermarkID1.It与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}"/>

2 个答案:

答案 0 :(得分:1)

您似乎无法直接更新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:inputTextp:watermark。关键是更新容器,而不是水印组件。

答案 1 :(得分:0)

我不建议更新包含水印的容器。在某些情况下,您可能必须更新整个表单组件,并且如果要从表单内部更新表单组件,则会陷入无限循环。 您可以通过将水印括在a中,然后不渲染面板来绕过此操作。

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

然后只需更新outputPanel。