春天验证提交前(Method.GET)(Spring validation prior to sub

2019-10-20 11:19发布

我在与Spring MVC的一个奇怪的问题(最新版本4.0.6)。 虽然试图在提交之前验证一个表单,我能得到验证到位,植入给出Spring表单的(截断为清楚起见)

<form:form method="post" commandName="contratto">
    <form:errors path="*" cssClass="alert alert-error" element="div" />
</form:form>

问题在于春格式化不叫可言,因此给我未本地化的日期和数字。

@RequestMapping(value = "/edit/{contractId}", method = RequestMethod.GET)
public String edit_form(@PathVariable("contractId") int id, ModelMap model) throws Exception {
    Contratti contratto = ejbRepository.getContratto(id);
    model.addAttribute("contratto", contratto);
    BindingResult result = new BeanPropertyBindingResult(contratto, "contratto");
    new CustomContrattoValidator().validate(contratto, result);
    if (result.hasErrors()) {
        model.addAllAttributes(result.getModel());
    }
return "contratti/form/edit";
}

通过使用经典的方法,如注释处理程序方法中陈述之前JSR-303的错误表单提交与Spring MVC显示或@Valid和DB绑定结果数据或春-加入BindingResult到新创建的模型属性的问题更是雪上加霜,作为

new CustomContrattoValidator().validate(contratto, result);

似乎所有的报告缺少的字段(例如,如果该对象完全是空的,即使代码是完全一样的,我得到它从DB)。

我完全丢失,无法围绕让我的头。

任何建议表示赞赏!

Answer 1:

你需要设置转换服务于BeanPropertyBindingResult。

获取转换服务:

@Autowired private ConversionService conversionService;

其传递:

BindingResult result = new BeanPropertyBindingResult(contratto, "contratto");
result.initConversion(conversionService);


文章来源: Spring validation prior to submit (Method.GET)