2011-08-19 31 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