【问题标题】:Spring MVC - <form:errors> empty, BindingResult contains errorsSpring MVC - <form:errors> 为空,BindingResult 包含错误
【发布时间】:2013-08-05 10:39:48
【问题描述】:

我遇到了@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 和错误相关的现有问题,但没有一个有效。

【问题讨论】:

  • 你能多加一点页面代码吗?例如,form:errors 是否在您的 form:form 标记内?
  • @SimonVerhoeven,我现在已经添加了表单的其余部分。
  • 如果出现以下错误,请尝试以下操作:ModelAndView modelAndView = new ModelAndView(NAMEPAGE); modelAndView.addObject("dataModel", dataModel); return modelAndView;
  • @SimonVerhoeven,尝试了以下操作,但我的页面上仍然没有显示错误...
  • 请提供DataModel类的来源。

标签: java spring spring-mvc jstl spring-annotations


【解决方案1】:

通过打开 Weblogic 12c 控制台中的 Optimistic Serialization 标志来解决此问题。希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 2011-03-05
    • 2016-01-07
    • 2018-05-19
    • 2017-06-27
    • 1970-01-01
    • 2016-11-24
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多