2011-08-19 45 views
1

我需要驗證表單中的多個字段,單個字段驗證工作正常。 我想知道是否所有的領域都是空的有沒有任何方式與jsf 1.x和richfaces 3.3顯示一條消息,如「所有領域是強制性的」,而不是每個驗證消息驗證jsf 1.x中的多個字段

回答

0

我正在使用MyFaces Extensions Validator +一個帶有ProcessedInformationRecorder的簡單插件,用於完成您正在談論的內容。

+0

感謝您的回覆......你能給一些這方面的例子代碼嗎? – user902490

+0

不幸的是它深深地集成在我們的組件庫中。但它不應該那麼難。只要看看他們的源代碼以及lib如何在內部使用ProcessedInformationRecorder進行交叉驗證。只需使用自定義標記註釋收集所有值,並將其添加到上下文(或您自己的上下文)中,並添加到階段偵聽器(驗證階段之後),然後檢查上下文,添加消息並調用FC.renderResponse。恕我直言,他們的郵件列表也是一個很好的信息來源,如果你卡住了,或者你看不到整個東西是如何工作的。但它不應該是困難的。 –

1

您可以擁有一個包含所有錯誤消息的列表,並且列表會在onsubmit中填充。

例如:

public String doBid() { 
    boolean flag=false; 
    errorMessages = new ArrayList<String>(); 
    if (getUserID().equals("")) { 
    flag=true; 
    } 
    if (getKeyword().equals("")) { 
    flag=true; 
    } 
    if (getNumericBidAmount() == 0.00) { 
    flag=true; 
    } 
    if (getNumericBidDuration() =0) { 
    flag=true; 

    } 
    if (flag==true) 
     errorMessages.add("all fields are mandatory"); 
    if (errorMessages.size() > 0) { 
    return(null); 
    } else { 
    return("success"); 
    } 
    14 } 


    --------- 

    public String getErrorMessages() { 
    String messageList; 
    if ((errorMessages == null) || 
    (errorMessages.size() == 0)) { 
    messageList = ""; 
    } else { 
    messageList = "<FONT COLOR=RED><B><UL>\n"; 
    for(String message: errorMessages) { 
    messageList = messageList + "<LI>" + message + "\n"; 
    } 
    messageList = messageList + "</UL></B></FONT>\n"; 
    } 
    return(messageList); 
    } 

    -------------------- 
    <h:form> 
    <h:outputText value="#{bidBean1.errorMessages}" 
    escape="false"/> 
    <TABLE> 
    <TR> 
    <TD>User ID: 
    <h:inputText value="#{bidBean1.userID}"/></TD></TR> 
    <TR> 
    <TD>Keyword: 
    <h:inputText value="#{bidBean1.keyword}"/></TD></TR> 
    <TR> 
    <TD>Bid Amount: 
    $<h:inputText value="#{bidBean1.bidAmount}"/></TD></TR> 
    <TR> 
    <TD>Duration: 
    <h:inputText value="#{bidBean1.bidDuration}"/></TD></TR> 
    <TR><TH> 
    <h:commandButton value="Send Bid!" 
    action="#{bidBean1.doBid}"/></TH></TR> 
    </TABLE> 
    </h:form> 
+0

我正在通過在驗證器方法前端設置驗證器屬性來進行單一字段驗證。我可以用驗證器方法實現你的邏輯嗎? – user902490