动态更新primefaces水印消息
我正在尝试根据jsf selectOneMenu中选择的值动态更新水印消息。用于水印组件的id为“waterMark1”。 水印组件链接到输入文本字段。 在valueChange上,我收到一条错误消息,无法找到id waterMarkID1。 我尝试根据selectOneMenu选择更新outputText,并将id保留为WatermarkID1。它可以与outputText一起使用 是否有任何方法根据bean值显示水印消息。如有任何帮助,将不胜感激动态更新primefaces水印消息,primefaces,Primefaces,我正在尝试根据jsf selectOneMenu中选择的值动态更新水印消息。用于水印组件的id为“waterMark1”。 水印组件链接到输入文本字段。 在valueChange上,我收到一条错误消息,无法找到id waterMarkID1。 我尝试根据selectOneMenu选择更新outputText,并将id保留为WatermarkID1。它可以与outputText一起使用 是否有任何方法根据bean值显示水印消息。如有任何帮助,将不胜感激 <h:selectOneMenu va
<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,或者仅通过浏览器中的“查看源代码”,这可能也会有所帮助。