Zuerst verwende ich einfaches Thema, aber auch ohne es das gleiche Verhalten auftritt (außer Seitenformatierung). Wenn ich das Formular absende, wird das Namensfeld leer und leitet zu register.jsp um, ohne den Validierungsfehler anzuzeigen. Nach dem Überprüfen der Protokolle oder des Debuggers scheint die Validierung ordnungsgemäß zu funktionieren und die Serverprotokollmeldungen werden wie erwartet geschrieben. Ich poste generischen Code.Struts2 Validierung funktioniert nicht richtig, Validierungsfehlermeldungen werden nicht angezeigt
struts.properties
struts.ui.theme=simple
MyAction
private User user = new User() // getter and setter
@Inject
transient UserDAO userDAO;
@Override
public User getModel() {
return user;
}
public void validate(){
LOG.debug("NAME VALIDATION " + user.getName());
if("".equals(user.getName())){
addFieldError("user.name", "Name can't be empty");
LOG.debug("Validation Error on name");
}
}
mit Debugger Karo, Validate-Methode arbeitet und Protokolle geschrieben werden.
struts.xml
<package name="users" extends="struts-default">
<action name="registerUser" method="prepareRegister" class="com.test.MyAction">
<result name="success">/register.jsp</result>
</action>
<action name="saveOrUpdateUser" method="saveOrUpdate" class="com.test.MyAction">
<result name="input" type="redirect">registerUser</result>
<result name="success" type="redirect">listUser</result>
</action>
</package>
register.jsp
<td>
<s:textfield id = "userName"
label = "User Name"
name = "user.name" />
</td>
<s:fielderror fieldName = "user.name" />
Fühlen Sie sich frei mich um Klärung zu bitten. Ich bin ziemlich neu zu Struts 2, ich habe versucht, die Struts 2 Dokumentation Validierung, und prüfte auch andere Tutorials. Ich weiß nicht, ob ich etwas vermisse oder ich habe eine Fehlkonfiguration, die ich nicht bemerke, da die Logik funktioniert und der Ansichtsteil (jsp) nicht. Danke im Voraus.
'getModel()' - mit model-driven? Hör auf es zu benutzen. –
@Aleksandr M: Wenn dies mit meinem Problem verbunden ist, werde ich :) – manu
'redirect' wird alle Fehler entfernen. Nicht umleiten. Und im Allgemeinen sollte 'redirectAction' verwendet werden, um zu einer Aktion umzuleiten. –