Verwenden validate-Methode und Validierung von xml zusammen in Struts 1
Ich bin nicht in der Lage zu verwenden, überprüfungen in validate-Methode und Validierungen in validation.xml zusammen , Wenn ich kommentieren die validate () - Methode der form validation.xml die Validierung arbeitet, sonst nur die Validierungen durchgeführt in der validate-Methode allein ist arbeiten!
Ich bin das einfügen der Ausschnitte des Codes beteiligt Sie unten, bitte lassen Sie mich wissen, auf wertvolle Anregungen:
public class DvaUpdateBean extends ValidatorActionForm implements Serializable {
//getter setters
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
String method = request.getParameter("method");
if (method == null){
return errors;
}
if(method.equalsIgnoreCase("updateDvar")){
if (getDescription() == null || getDescription().length() < 1) {
errors.add("descreq", new ActionMessage("error.ps.descreq"));
}
if (getReason() == null || getReason().length() < 1) {
errors
.add("reasonreqd", new ActionMessage(
"error.ps.reasonreqd"));
}
if( getInVoiceRadio() == null || getInVoiceRadio().length() < 1 ) {
errors.add("invreq",new ActionMessage("error.dva.invreq"));
}
if ( getInVoiceRadio()!=null && getInVoiceRadio().equalsIgnoreCase("Y") && ( getInVoiceNumber()==null || getInVoiceNumber().length() < 1) ) {
errors.add("invnumreq",new ActionMessage("error.dva.invnumreq"));
//if ( getCrDate()!=null && getCrDate().length()<1) {
//errors.add("condatereq", new ActionMessage("error.wlrr.condatereq"));
//}
}
if ( getInVoiceRadio()!=null && getInVoiceRadio().equalsIgnoreCase("Y") && ( getInVoiceNumber()!=null || getInVoiceNumber().length() > 1) && ( getInVoiceDate()==null || getInVoiceDate().length()<1 ) ) {
errors.add("invdatereq", new ActionMessage("error.dva.invdatereq"));
}
if ( getInVoiceRadio()!=null && getInVoiceRadio().equalsIgnoreCase("N") && ( ( getInVoiceNumber()!=null && getInVoiceNumber().length() > 1) || ( getInVoiceDate()!=null && getInVoiceDate().length()>1 ) ) ) {
errors.add("invreqyn", new ActionMessage("error.dva.invreqyn"));
}
}
return errors;
}
}
Validation.xml
<form-validation>
<formset>
<form name="/dvaSearch">
<field property="dvaSearchBean.dvasrNumber" depends="integer">
<msg name="integer" key="label.invalidDvasrNumber" />
</field>
<field property="searchOriDate" depends="date">
<var><var-name>datePatternStrict</var-name><var-value>MM-dd-yyyy</var-value></var>
<msg name="date" key="label.invalidOrignDate"/>
</field>
</form>
</formset>
</form-validation>
Struts-config.xml
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in das gleiche Problem ashwinsakthi. Hier ist, wie ich es behoben.
ANMERKUNG: Meine form-bean erbt von ValidatorForm und nicht ValidatorActionForm wie in deinem code. ValidatorActionForm erbt von ValidatorForm also ich denke, es wird funktionieren.
Die Idee ist, rufen die Eltern validate-Methode von innen Ihre form. Erhalten Sie die Fehler, falls vorhanden, die vom validator-framework zunächst, dass Art und Weise. Dann gehen Sie voran und fügen Sie Ihre eigenen Validierung der normale Weg.
In meine jsp-Datei (wo meine form ist) habe ich auch die folgende, für alle Fehler anzeigen, wenn das Formular gebucht:
Schließlich, hier ist ein Ausschnitt aus meiner struts-config.xml Datei.
In meinen Tests bekomme ich die erwarteten Ergebnisse, die Sie erwarten. Probieren Sie es aus.