2017-11-01 12 views
0

Springブートコントローラでバインドを取得しているときに着信Json要求をHibernate- validatorで検証しようとしています。ここに私の単純なブートアプリケーションは、私はブランク値がnameフィールドに割り当てた場合、私は悪い要求応答を取得することを受け入れていますように、私はnameプロパティNotBlankをマークしているなぜ@Validは、hibernateバリデータで検証をトリガーしませんか?

@SpringBootApplication 
@RestController 
public class ValidationTestApplication { 

private static final Logger logger = LoggerFactory.getLogger(ValidationTestApplication.class); 

public static void main(String[] args) { 
    SpringApplication.run(ValidationTestApplication.class, args); 
} 

@PostMapping 
public ResponseEntity<Node> postController(@Valid @RequestBody Node node, BindingResult result) { 
    logger.info("Hit in post controller"); 
    if (result.hasErrors()) { 
     logger.error("Found Error !!!!"); 
     result.getAllErrors().forEach(i -> logger.error(i.toString())); 
     return ResponseEntity.badRequest().body(node); 
    } 
    return ResponseEntity.ok(node); 
} 
static class Node { 

    @NotBlank 
    String name; 
    int age; 
    // ... default, all args constructor 
    // ... getters and setters. 

} 
} 

です。ここで

はJSONはそれである私は

{ 
    "name":"", 
    "age":23 
} 

をテストしていしかし、私はすべてのエラーを取得しておりません。私はそれが妥当性検査を引き金にしていないと思う。私はここで何が欠けているのですか?

役に立つと分かった場合はPOMも提供しています。

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.example.seal</groupId> 
<artifactId>validation-test</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>validation-test</name> 
<description>Demo project for Spring Boot</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.8.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok-maven --> 
    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok-maven</artifactId> 
     <version>1.16.18.1</version> 
    </dependency> 

</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

+0

'Node'クラスを最上位クラスにするようにしてください。現在、静的な内部クラスです。 – MohamedSanaulla

答えて

1
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>5.4.1.Final</version> 
</dependency> 

pom.xmlにこの依存関係を追加します。

関連する問題