并非JSP中显示的所有Form错误

时间:2013-03-07 06:51:44

标签: java json jsp spring-mvc

我有以下验证代码

@RequestMapping(value = "/itemValidation.json", method = RequestMethod.POST)
    @ResponseBody
    public ValidationResponse ajaxValidation(
            @ModelAttribute(value = formName) @Valid Item item,
            BindingResult result) {
        ValidationResponse res = new ValidationResponse();
        if (!result.hasErrors()) {
            res.setStatus("SUCCESS");
        } else {
            res.setStatus("FAIL");
            List<FieldError> allErrors = result.getFieldErrors();
            List<ErrorMessage> errorMesages = new ArrayList<ErrorMessage>();
            for (FieldError objectError : allErrors) {
                errorMesages.add(new ErrorMessage(objectError.getField(),
                        objectError.getDefaultMessage()));
            }
            res.setErrorMessageList(errorMesages);
        }
        return res;
    }

验证后,有三个元素不满足如下所示的约束条件:

FTIR in Biometrics http://i48.tinypic.com/hwdf6v.png

问题出在JSP上,只显示最后两个错误。不显示fieldName:itemPK.name的错误。

我使用以下代码显示错误:

<span class="help-inline"><form:errors path="${name}" /></span>

我按顺序生成输入元素:

<input id="itemPK.name_id" name="itemPK.name" type="text" value="">
<input id="price_id" name="price" type="number" value="">
<input id="point_id" name="point" type="number" value="">

不确定出了什么问题,希望任何人都能对此有所了解。

2 个答案:

答案 0 :(得分:1)

如果您说显示最后2个字段错误,那么您可能错误地输入了第一个字段的名称。使用

<form:input path="name" /><span class="help-inline"><form:errors path="name" /></span> 

或使用在调试窗口中反映到您的字段名称的路径值itemPK.name

答案 1 :(得分:1)

我发现了问题所在。还有另一个层,其中ajax响应方法假设将所有错误消息附加到适当的字段。由于jQuery选择器无法找到名为itemPK.name的元素,因此从未显示第一个错误,修复方法是将其更改为itemPK\\.name