Javax.Validation - permite validar nula, pero si el valor no es

Itsik Mauyhas:

Estoy usando javax Validation.constraintsy quiero validar la entrada, pero permitir que sea nula, mi POJO:

public class somePOJO{
    @NotNull
    @Size(min =2, max=50)
    @Pattern(regexp="^[A-Za-z \\s\\-]*$")
    private String country;

    @Size(min =2,max=50)
    @Pattern(regexp="^[A-Za-z \\s\\-]*$")
    private String state;
    //gettes, setters.....

}

Quiero validar statepor ejemplo, con @Patterny @sizesólo si no null.

¿Hay una manera de hacerlo con el uso de anotaciones personalizados ?

ygor:

Esto funciona fuera de la caja como era de esperar por ejemplo, en última primavera de arranque, 2.1.0.

¿Qué versión de arranque primavera está usando?

Esta es la versión completa del POJO (aviso por favor, que promuevo una clase inmutable):

package sk.ygor.stackoverflow.q53207105;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

public class SomePOJO {

    @NotNull
    @Size(min =2, max=50)
    @Pattern(regexp="^[A-Za-z \\s\\-]*$")
    private final String country;

    @Size(min =2,max=50)
    @Pattern(regexp="^[A-Za-z \\s\\-]*$")
    private final String state;

    public SomePOJO(String country, String state) {
        this.country = country;
        this.state = state;
    }

    public String getCountry() {
        return country;
    }

    public String getState() {
        return state;
    }

}

Y la versión completa del controlador:

package sk.ygor.stackoverflow.q53207105;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

@RestController
public class ExampleController {

    @RequestMapping(path = "/q53207105", method = RequestMethod.POST)
    public void test(@Valid @RequestBody SomePOJO somePOJO) {
        System.out.println("somePOJO.getCountry() = " + somePOJO.getCountry());
        System.out.println("somePOJO.getState() = " + somePOJO.getState());
    }

}

Llamar a http: // localhost: 8080 / q53207105 con:

{
    "country": "USA",
    "state": "California" 
}

Huellas dactilares:

somePOJO.getCountry() = USA
somePOJO.getState() = California

Llamar a http: // localhost: 8080 / q53207105 con:

{
    "country": "USA",
}

Huellas dactilares:

somePOJO.getCountry() = USA
somePOJO.getState() = null

Si usted me dice su versión de arranque de primavera, podría ayudar más.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=220894&siteId=1
Recomendado
Clasificación