Ich versuche, die @Validated-Annotation zu gültigen Formulardaten zu verwenden, die an einen Controller zurückgegeben werden, aber es kann den benutzerdefinierten Validator, den ich erstellt habe, nicht aufrufen. Code unten:@Validated-Annotation funktioniert nicht
@PostMapping("/saveTransaction")
public String saveTransaction(@ModelAttribute("transaction")
@Validated Transactions transaction, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
System.out.println("Non formated form stuff.");
return "transactions/transactionsForm";
}
Der Code funktioniert, wenn ich manuellen Aufruf des Validator wie in:
@PostMapping("/saveTransaction")
public String saveTransaction(@ModelAttribute("transaction") Transactions transaction, BindingResult bindingResult) {
validator.validate(transaction, bindingResult);
if(bindingResult.hasErrors()) {
System.out.println("Non formated form stuff.");
return "transactions/transactionsForm";
}
ich meine Auto-Verkabelung Klasse bin und den Validator initialisiert den folgenden Code verwenden.
@Autowired
private TransactionService transactionService;
@Autowired
@Qualifier("transactionValidator")
private Validator validator;
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}
I have the following code in Spring.xml file:
<mvc:annotation-driven validator="transactionValidator" />
<bean id="transactionValidator" class="org.lexusmanson.lexbudget.validator.TransactionValidator" />
Meine aktuellen Abhängigkeiten sind:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.9</java.version>
<failOnMissingWebXml>false</failOnMissingWebXml>
<spring.version>5.0.1.RELEASE</spring.version>
<hibernate.version>5.2.11.Final</hibernate.version>
<hibernate.validator>5.4.1.Final</hibernate.validator>
<c3p0.version>0.9.5.2</c3p0.version>
<jstl.version>1.2.1</jstl.version>
<tld.version>1.1.2</tld.version>
<servlets.version>3.1.0</servlets.version>
<jsp.version>2.3.1</jsp.version>
<hsqldb.version>1.8.0.10</hsqldb.version>
<aspectj.version>1.8.13</aspectj.version>
</properties>
<dependencies>
<!-- Spring MVC Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring ORM -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Hibernate Core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- Hibernate-C3P0 Integration -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- c3p0 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<!-- Hibernate Validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate.validator}</version>
</dependency>
<!-- JSTL Dependency -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${tld.version}</version>
</dependency>
<!-- Servlet Dependency -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlets.version}</version>
<scope>provided</scope>
</dependency>
<!-- JSP Dependency -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency>
<!-- HSQL Dependency -->
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>${hsqldb.version}</version>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
Warum wird nicht die Anmerkung meines Validierungscode nennen?
Ich habe versucht, die Validierung in einer anderen Klasse hinzuzufügen, und es scheint, dass es gut zu funktionieren. Trotzdem kann es das obige Beispiel nicht schaffen. Ich weiß überhaupt nicht, was los ist. –