4

検証用に次のコードがあります

@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;
    }

検証時に、以下に示すように、制約を満たさない 3 つの要素があります。

生体認証における FTIR

問題は JSP にあり、最後の 2 つのエラーのみが表示されます。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="">

何がうまくいかなかったのかわからないので、誰かがこれに光を当ててくれることを願っています.

4

2 に答える 2

1

私は問題が何であるかを知りました。ajax応答メソッドがすべてのエラーメッセージを適切なフィールドに追加することを想定している別のレイヤーがあります。jQueryセレクターが名前itemPK.nameの要素を見つけることができないため、最初のエラーは表示されませんでした。修正は、要素をに変更することでしたitemPK\\.name

于 2013-03-11T02:10:06.243 に答える
1

最後の 2 つのフィールド エラーが表示されると言った場合は、最初のフィールドの名前が間違っている可能性があります。使用する

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

itemPK.nameまたは、デバッグ ウィンドウでフィールド名に反映されるパス値を使用します。

于 2013-03-09T11:46:29.983 に答える