2017-06-05 4 views
0

Ich habe meine Bohne mit einigen @NotNull kommentiert und die Quelle @Valid Annotation in der @GetMapping verwenden. Aber das hat nicht funktioniert.Unterstützt spring webflux die Validierung von Java-Bean?

Der einzige Unterschied, den ich von anderen Anwendungen sehe, ist, dass ich @EnableWebMvc anstelle von @EnableWebFlux verwende.

In der Steuerung:

@PostMapping(value = "/something") 
    public Mono<ResponseEntity> save(
           @Valid @RequestBody MyBean mybean) { 
     return myService.save(myBean) 
       .map(RestResponses::ok) 
       .defaultIfEmpty(RestResponses.empty()); 
    } 

Im Application.java:

@SpringBootApplication 
    @EnableWebFlux 
    public class Application { 

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

Meine Bean-Klasse:

import org.springframework.data.annotation.Id; 
    import org.springframework.data.redis.core.RedisHash; 
    import org.springframework.data.redis.core.index.Indexed; 

    import javax.validation.constraints.NotNull; 
    import java.util.Objects; 

    @RedisHash("mybean") 
    public class MyBean { 

     @Id 
     private Long id; 

     @NotNull 
     @Indexed 
     private String name; 

     //getters, setters... 

    } 

und pom.xml:

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

... 

<dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-redis</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-webflux</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>io.netty</groupId> 
      <artifactId>netty-all</artifactId> 
     </dependency> 

</dependencies> 

Mache ich etwas falsch?

+0

Könnten Sie bitte Code Ihrer Get-Methode hinzufügen? –

+0

@Orest, fertig! Danke für Ihr Interesse. –

+0

Und 'MyBean' Klasse. Auch welche Springboot Version hast du '2.0.0M1'? –

Antwort

1

Eigentlich gibt es einige Abhängigkeiten Problem. In den Abhängigkeiten können Sie diese beiden Bibliotheken sehen:

org.hibernate:hibernate-validator:5.4.1.Final 
javax.validation:validation-api:1.1.0.Final 

und Dokumentation nach Hibernate Validator sollten Sie zusätzliche Abhängigkeit sorgen für Unified Expression Language

compile group: 'org.glassfish', name: 'javax.el', version: '3.0.1-b08' 

Nach @Valid Anmerkung sollte wie erwartet funktionieren.

+0

Danke, aber ich habe schon alle diese Abhängigkeiten. –

Verwandte Themen