Estoy usando javax Validation.constraints
y 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 state
por ejemplo, con @Pattern
y @size
sólo si no null
.
¿Hay una manera de hacerlo con el uso de anotaciones personalizados ?
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.