我需要验证表单中的多个字段,单个字段验证工作正常。我想知道是否所有字段都是空的,JSF 1有什么办法。X和richfaces 3.3显示单个消息,如"所有字段都是强制性的",而不是每个验证消息
您可以有一个包含所有错误消息的列表,并且该列表在提交时填充。
的例子:
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>
我使用MyFaces Extensions Validator +一个简单的插件ProcessedInformationRecorder来做你正在谈论的事情。