Mvc de la última primavera, utilizando freemarker.Confundido en cuanto a cómo validar la forma mvc de primavera, ¿cuáles son mis opciones?
Esperando que alguien pueda decirme cuáles son mis opciones en términos de validación de un formulario con spring mvc, y cuál es la forma recomendada de hacerlo.
Tengo un formulario que no se asigna directamente a un modelo, tiene campos de entrada que cuando se publiquen, se utilizarán para inicializar 2 objetos modelo que luego necesitaré validar, y si pasan los guardaré. .
Si fallan, quiero volver al formulario, rellenar los valores con lo que el usuario ingresó y mostrar los mensajes de error.
He leído aquí y allá unos 2 métodos, una vez de que he hecho y comprender como funciona:
@RequestMapping(...., method = RequestMethod.POST)
public ModelAndView myMethod(@Valid MyModel, BindingResult bindingResult) {
ModelAndView mav = new ModelAndView("some/view");
mav.addObject("mymodel", myModel);
if(bindingResult.hasErrors()) {
return mav;
}
}
Ahora bien, esto funcionó si mi forma mapea directamente a la forma, pero en mi situación tener:
forman campos que no se asignan a ningún modelo específico, tienen algunas propiedades de 2 modelos.
antes occurrs validación, Necesito crear los 2 modelos de forma manual, establezca los valores del formulario y establezca manualmente algunas propiedades también:
validarde llamadas en ambos modelos (Model1, model2), y anexar estos mensajes de error a la colección de errores que necesito devolver a la misma página de vista si las cosas no funcionan.
Cuando el formulario se publica, tengo que hacer algunas llamadas a la base de datos, y en función de esos resultados puede ser necesario agregar mensajes adicionales a la colección de errores.
¿Alguien me puede decir cómo hacer este tipo de validación?
Pseudo código de abajo:
Model1 model1 = new Model1();
Model2 model2 = new Model2();
// manually or somehow automatically set the posted form values to model1 and model2.
// set some fields manually, not from posted form
model1.setProperty10(GlobalSettings.getDefaultProperty10());
model2.setProperty11(GlobalSettings.getDefaultProperty11());
// db calls, if they fail, add to errors collection
if(bindingResult.hasErrors()) {
return mav;
}
// validation passed, save
Model1Service.save(model1);
Model2Service.save(model2);
redirect to another view
actualización
he utilizando los JSR 303 anotaciones en mis modelos en este momento, y sería grande si puedo usar los que siguen.
Actualización II
Por favor leer la descripción de recompensas a continuación un resumen de lo que yo estoy buscando.