2013-07-16 56 views
0

不顯示你好,我有下面的代碼有問題。驗證工作正常,一切都很好,我唯一的問題是不顯示驗證的錯誤消息。我錯過了什麼或問題出在彈出窗口?錯誤消息在彈出的

<rich:popupPanel id="popup" modal="true" height="280" width="200" resizeable="true" onmaskclick="#{rich:component('popup')}.hide()">     
    <f:facet name="header"> 
     <h:outputText value="Simple popup panel" /> 
    </f:facet> 
    <f:facet name="controls"> 
     <h:outputLink value="#" onclick="#{rich:component('popup')}.hide(); return false;"> X </h:outputLink> 
    </f:facet> 
<h:form id="newmssform"> 
    <table class="position"> 
     <tr> 
      <td> 
      <h:outputText class="output_text" value="New MSS Name:"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <h:inputText id="mssusernamefield" value="#{NetworkBean.newMss}"> 
       <f:validator validatorId="NewMssValidator"/> 
       <f:attribute name="mssaddressfield" value="#{mssaddressfield}"/> 
      </h:inputText> 
      <h:message for="mssusernamefield" errorClass="errors"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <h:message for="mssusernamefield" errorClass="errors"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <h:outputText class="output_text" value="IP Address:"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <h:inputText id="mssaddressfield" value="#{NetworkBean.address}" binding="#{mssaddressfield}"/> 
      <h:message for="mssaddressfield" errorClass="errors"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <h:outputText class="output_text" value="User:"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <h:inputText id="mssuserfield" value="#{NetworkBean.mssUser}" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <h:outputText class="output_text" value="Password:"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <h:inputSecret id="msspwdfield" value="#{NetworkBean.mssUserPass}" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <a4j:commandButton style="border-radius: 5px; color: #FF6E00; font-weight: bold; font-size: 12px; margin-top: 5px;" value="Add New MSS"render="table,mss_table,oldIP" action="#{NetworkBean.addNewMss()}" />                
      </td> 
     </tr>   
</table>       

這裏是驗證:

public void validate(FacesContext fc, UIComponent uic, Object o) throws ValidatorException { 

     String mssName = o.toString(); 
     UIInput addressComponent = (UIInput)uic.getAttributes().get("mssaddressfield"); 
     String address = addressComponent.getSubmittedValue().toString(); 
     UIInput userNameComponent = (UIInput) uic.getAttributes().get("mssaddressfield"); 
     String userName = userNameComponent.getSubmittedValue().toString(); 
     UIInput passwordComponent = (UIInput) uic.getAttributes().get("mssaddressfield"); 
     String password = passwordComponent.getSubmittedValue().toString(); 
     if(mssName.isEmpty() || address.isEmpty() || userName.isEmpty() || password.isEmpty()){ 
      addressComponent.setValid(false); 
      userNameComponent.setValid(false); 
      passwordComponent.setValid(false); 
      throw new ValidatorException(
       new FacesMessage("Error!")); 
     } 

    } 

回答

1

正如我預測你的message不是重新呈現準時
h:message改變代碼像下面的例子

<a4j:outputPanel ajaxRendered="true"> 
    <h:message for="mssusernamefield" errorClass="errors"/> 
<a4j:outputPanel> 

這可能幫助你

+0

還要檢查@makhiel可能性 –

+0

作品!謝謝! –

0

FacesMessage由兩個字符串:摘要和詳細。當你調用new FacesMessage("Error!")你設置了總結。

h:message的默認行爲是顯示細節,但不是摘要。您可以告訴它顯示摘要:showSummary="true"或提供的的FacesMessage細節:new FacesMessage("Error!", "Validation produced an error.")