Spring MVC Formular:Fehler nicht angezeigt
Entschuldigt, wenn diese Frage gestellt wurde, vor. Ich hoffe, dass jemand kann in Schritt und helfen mir herauszufinden, warum mein form-überprüfungs-Fehlern nicht angezeigt.
Ich bin mit Spring 3.0.3 und Winterschlaf, und ich bin mit jsr 303 Validierung zur Validierung Formular-Eingaben. Ich habe ein Spring-controller, der die Griffe Immer eine Seite, die ein Formular enthält, das Sie mit Hilfe der Spring form-taglib. In dieser form ein Benutzer ist in der Lage, ändern Ihre Namen und haben es in der Datenbank gespeichert. Wenn eine der Eingabe leer ist, dann die Seite mit dem Formular angezeigt werden sollen, wieder mit den Fehlermeldungen. Die gleichen controller für die Seite der Vorlage. Es scheint, dass der controller ordnungsgemäß funktioniert in den meisten Punkten, aber wenn es einen Fehler in der eingereichten form, es werden keine Fehler angezeigt auf der Seite.
Hier ist, was die form sieht so aus:
<form:form commandName="changeNameCommand">
<form:errors path="*" cssClass="errorBox" />
<table width="100%" border="0" cellspacing="5" cellpadding="5" align="left">
<tr>
<td><b>First Name:</b></td>
<td><form:input path="firstName" value="${user.firstName}" /></td>
</tr>
<tr>
<td><b>Last Name:</b></td>
<td> <form:input path="lastName" value="${user.lastName}" /></td>
</tr>
</table>
</form:form>
Beachten Sie, dass es ein user-Objekt in der Ansicht, die verwendet wird, um zu füllen Sie die form mit der aktuellen ersten und letzten Namen. Das ist richtig funktioniert.
Der controller sieht wie folgt aus:
@Controller
@RequestMapping(value = "/account/settings/change-name")
@SessionAttributes("changeNameCommand")
public class ChangeNameController {
@ModelAttribute("changeNameCommand")
public ChangeNameCommand getCommand() {
return new ChangeNameCommand();
}
@RequestMapping(method = RequestMethod.GET)
public ModelAndView getChangeNamePage(HttpServletRequest req) {
ModelAndView mav = new ModelAndView("Account.ChangeName");
mav.addObject("page_title", "Change Name");
return mav;
}
@RequestMapping(method = RequestMethod.POST)
public String doChangeName(
@ModelAttribute("changeNameCommand")
@Valid ChangeNameCommand command,
BindingResult result, SessionStatus status) {
if (result.hasErrors()) {
return "redirect:/account/settings/change-name";
}
//Code here to persist updated user first and last name to database...
status.setComplete();
return "redirect:/home";
}
}
Ich bin mit Fliesen 2.1.2 auf Seiten verfassen und Urlrewrite 3.1.0 helfen-freundliche urls.
Den ChangeNameCommand Klasse sieht ungefähr so aus:
import org.hibernate.validator.constraints.NotEmpty;
public class ChangeNameCommand {
@NotEmpty(message = "You must provide a first name.")
private String firstName;
@NotEmpty(message = "You must provide a last name.")
private String lastName;
@NotEmpty(message = "Your password is required to make changes.")
private String currentPassword;
//Getters and setters here...
}
Beim Debuggen sehe ich, dass, wenn es keinen Eingang für entweder den ersten oder letzten Namen der BindingResult Instanz enthält Fehler. Mein Anliegen ist die Umleitung, wenn ein Fehler aufgetreten ist. Ich habe gesehen, andere Fragen hier, die nur wieder den Namen der Ansicht an, anstatt die Umleitung: Präfix. Ich habe versucht, die aber (denke ich), weil der Weg, ich bin mit Urlrewrite und die Art, wie mein servlet-mapping eingestellt, bis der Frühling gibt einen Fehler zurück. Ich habe versucht, die Rückkehr
/account/settings/change-name
/web/account/settings/change-name
/mywebsite/web/account/settings/change-name
aber ohne Erfolg. FWIW, hier mal mein servlet-mapping:
<servlet-mapping>
<servlet-name>mywebsite</servlet-name>
<url-pattern>/web/*</url-pattern>
</servlet-mapping>
Jede Hilfe viel geschätzt!
Du musst angemeldet sein, um einen Kommentar abzugeben.
mit
redirect
macht alle request-Eigenschaften (einschließlich der Fehler und das ganze Modell) verschwinden. Benutzen Sie also nicht umleiten, oder verwenden Sie die Sitzung, um vorübergehend die Daten zu speichern, oder verwenden Sie die Gespräche. Oder herauszufinden, wie man so etwas wie eine flash-scope (ich werde in eine Weile)Andere Sache - mit
UrlRewriteFilter
mit spring-mvc ist unangebracht. Sie haben die volle Kontrolle über Ihre beatuful REST-wie die URLs mit spring-mvc nur.Hier ist, wie ich mein problem gelöst. Zu beginnen mit, ich wollte nicht meine drop-Nutzung UrlRewriteFilter und Fliesen. Jedoch, das problem dabei war, dass, im Falle von Fehlern, konnte ich nicht nur wieder der Pfad, wie in der Controller
RequestMapping
annotation. Unten ist meine Lösung, mit der redirect entfernt, im Falle von Fehlern, die indoChangeName()
.Danke an alle die mir geholfen haben auf diesem!