Pregunta

Estoy trabajando en forma sencilla para validar campos como éste.

public class Contact {

    @NotNull
    @Max(64)
    @Size(max=64)
    private String name;

    @NotNull
    @Email
    @Size(min=4)
    private String mail;

    @NotNull
    @Size(max=300)
    private String text;


}

proporciono getter y setters hibernación dependencias en mi ruta de clase also.But yo todavía no entiendo cómo validar el sencillo formulario que hay en realidad no es tanto la documentación para la combinación de hibernación primavera.

@RequestMapping(value = "/contact", method = RequestMethod.POST)
public String add(@Valid Contact contact, BindingResult result) {
    ....
}

Podría explicar o dar algún tutorial, excepto la documentación original de la primavera 3.x

¿Fue útil?

Solución

Si desea utilizar la anotación @Valid para activar la validación de su bean de respaldo. Entonces no es la anotación de Hibernate es javax.validation.Valid de la API de validación.

Para hacerlo funcionar necesita ambos

En mi caso he usado un validador personalizado (RegistrationValidator) en lugar de la anotación de los campos de formulario en el bean de respaldo para hacer la validación. Necesito para establecer la clave de I18N para los mensajes de error que es la razón de que tenía que reemplazar el MessageCodeResolver Spring 3 con la mía. El original de la primavera 3 siempre trata de añadir tipo o campo de nombre para encontrar la clave correcta cuando no se encuentra en la primera forma.

Un poco ejemplo:

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
...
import javax.validation.Valid;

@Controller
public class RegistrationController
{
    @InitBinder
    protected void initBinder(WebDataBinder binder) 
    {
        binder.setMessageCodesResolver(new MessageCodesResolver());
        binder.setValidator(new RegistrationValidator());
    }

    @RequestMapping(value="/userRegistration.html", method = RequestMethod.POST)
    public String processRegistrationForm(@Valid Registration registration, BindingResult result, HttpServletRequest request) 
{
         if(result.hasErrors())
         {
            return "registration"; // the name of the view
         }

         ...
    }
}

Así que espero que esto ayude.

Por cierto. Si alguien sabe la página web oficial de la API Bean Validation, informe a ... Gracias.

Otros consejos

Sé que éste es contestada ... pero aquí está mi $ 0,02 vale la pena de todos modos :-) había utilizado el mismo ejemplo que se refería a Burak, y la validación estaba tampoco se invoca de forma automática ... he tenido que añadir la <mvc:annotation-driven /> a mi archivo de contexto de aplicación ... (entonces la validación fue provocada). Asegúrese de que también agrega los detalles MVC para la declaración de esquema ... ejemplo es el siguiente ...

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-3.0.xsd
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/mvc
        ">

    <mvc:annotation-driven />
...
</beans>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top