1

我正在尝试根据从 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}"/>
4

2 回答 2

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,例如,to h:inputTextand p:watermarkonly。关键是更新容器,而不是水印组件。

于 2012-11-12T21:38:25.660 回答
0

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

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

然后只需更新 outputPanel。

于 2018-07-20T15:25:02.620 回答