0

@Valid と BindingResult が返された JSP ページにエラーをプッシュしないという問題が発生しています。メソッドの BindingResult はバインディング エラーを正しく検出しますが、現在エラーを表示できる唯一の方法は、ページに手動で result.getAllErrors() を追加することです。次の要素はどれも機能しません。

<form:form name="updateForm" commandName="dataModel" method="post" action="${pageContext.request.contextPath}/pages/data">

    <form:errors path="*" />
    <form:errors />


    <c:forEach items="${dataModel.rows}" var="data" varStatus="currRow">
        <c:out value="${data.code}" />
        <form:errors path="dataRows[${currRow.index}].tolPercentage" />
        <form:input path="dataRows[${currRow.index}].tolPercentage" />
    </c:forEach>

</form:form>

コントローラ クラス メソッド:

@Controller
@SessionAttributes("dataModel")
public class DataControllerController{

    @RequestMapping(value = "/data", method = RequestMethod.POST)
    protected ModelAndView onSubmit(
            @ModelAttribute("dataModel") @Valid DataModel dataModel ,
            BindingResult result
    ) throws ServletException, IOException {

        ModelAndView model = new ModelAndView("DataFormPage");

        if ( result.hasErrors() ) {
            model.addAllObjects(result.getModel());
        } else {
            ...
        }

        return model;
    }

    @ModelAttribute("dataModel")
    public DataModel getDataModel() {
        return new DataModel();
    }

}

フォーム フィールド:

@Min(0)
@Max(1)
@Digits(fraction=2, integer = 1)
@Column(name="TOL_PERCENTAGE", precision = 1, scale = 2)
private BigDecimal tolPercentage;

BindingResult とエラーに関連する既存の質問の大部分に目を通しましたが、どれもうまくいきませんでした。

4

1 に答える 1

1

Weblogic 12c コンソールでオプティミスティック シリアライゼーション フラグをオンにすることで、この問題を解決することができました。これが他の人に役立つことを願っています。

于 2013-08-14T16:01:44.320 に答える