2012-11-12 40 views
1

我正嘗試根據jsf selectOneMenu中選定的值動態更新水印信息。用於水印組件的id是「waterMark1」。 水印組件鏈接到輸入文本字段。 在valueChange上,我收到一條錯誤消息,指出無法找到id爲waterMarkID1的位置。 我嘗試更新基於selectOneMenu選擇的outputText,並將id保持爲WatermarkID1.It可以正常使用outputText。動態更新primefaces水印信息

有什麼方法可以顯示基於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}"/> 
+0

水印組件是否位於表單中?如果是這樣,你可能必須在ID前加':

:waterMarkID1'或類似的東西。如果你在Firebug(或類似的)中查看實際生成的ID,或者只是通過瀏覽器中的「查看源代碼」,它可能也會有所幫助。 – Magnilex

回答

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。關鍵是更新容器,而不是水印組件。

+0

謝謝akoskm,它的功能就像一個魅力... –