Ich versuche JSR-303
Validierung zu verwenden und seine Ergebnisse in jsp
Seite anzuzeigen. Hier ist jsp
Seitencode Stück, das zeigt Fehler:Spring JSR-303 mit Formular: Fehler Tag
<c:set var="Error">
<form:errors path="name"/>
</c:set>
...
<spring:transform value="${Error}"/>
In der Steuerung Ich habe folgende:
@PostMapping(params = "next")
public String next(@Valid @ModelAttribute(COMMAND_NAME) final ProjectNewDetailsCommand cmd,
final Errors errors,
final Model model,
final HttpServletRequest request) {
Zunächst wird die Lösung, die für mich gearbeitet wird eine benutzerdefinierte Validator
Klasse zu schreiben:
@Override
public void validate(Object o, Errors errors) {
errors.pushNestedPath("project");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "error.project.creation.name.required");
errors.popNestedPath();
}
In diesem Fall wurde die entsprechende Nachricht von messages.properties
angewendet und auf UI:
error.project.creation.name.required=The name must not be blank.
Hier ist ein weiterer Fall, wenn ich JSR-303
Anmerkung:
public class Project {
...
@Size(max = 100, message = "error.project.creation.size")
private String name;
In messages.properties
dort die Nachricht unter Schlüssel error.project.creation.size
ist, habe ich auch die Nachricht mit Schlüssel Size.command.project.name
hinzuzufügen versucht, wie es in einigen angegeben ist der Quellen. Error
Objekt im Controller ist auch nicht leer und enthält Validierungsfehler. Aber wenn ich diesen Ansatz mit JSR-303
verwenden bekam ich folgende Fehlermeldung:
Caused by: javax.servlet.jsp.JspTagException: No message found under code 'Size' for locale 'en_US'.
at org.springframework.web.servlet.tags.MessageTag.doEndTag(MessageTag.java:200)
Was bedeutet, dass aus irgendeinem Grund Spring
versucht Size
Fehlercode anzuwenden statt error.project.creation.size
oder Size.command.project.name
. Irgendwelche Ideen, warum das passiert und wie das zu beheben?
Ich denke, es 'Nachricht geschrieben werden sollte = "{error.project.creation.size}"' 'error.project übereinstimmen. creation.size' –
Ich habe das auch versucht. Hat nicht für mich funktioniert, also denke ich, es gibt ein anderes Problem. –
Ok, und wenn Sie es versucht haben, was war der Inhalt des Error-Objekts? War die Nachricht vorhanden? –