当某些参数为null时,与ModelAttribute的表单绑定会抛出BadRequest

时间:2014-07-17 05:57:14

标签: spring-mvc

我正在使用与@ModelAttribute的Spring表单数据绑定。我在表单中有一些隐藏的字段,我需要在发布请求后填充这些字段。这些是我的一些观察:

1)如果这些隐藏字段具有默认值,则表单中的数据正确绑定

2)如果隐藏字段没有值,则服务器抛出BadRequest

3)如果我删除控制器中的ModelAttribute绑定,我可以使用null发送隐藏字段,但我必须使用request.getParameter()

分别检索每个参数

问题:是否有使用@ModelAttribute的解决方法,我可以为某些表单数据发送空值? (例如序列id,最后更新时间等值)

对于任何null的表单参数都会出现此问题 - 因此当使用@ModelAttribute进行表单绑定时,任何可以保留为空的可选表单值也会产生“BadRequest”

另外,我想我会提到我正在使用ajax来发送请求(我在使用ajax时不读使用@ModelAttribute,不确定它是否有效)

感谢。

1 个答案:

答案 0 :(得分:0)

你可以尝试使用弹簧形式:

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page isELIgnored="false"%>
<div class="body-wraper">
  <section class="wrap">
    <h1><spring:message code="applicant.enrollment.module.label"/></h1>

    <form:form id="frmNetwrkSubscripInfo" method="post" modelAttribute="applicantDto">
    <form:hidden path="applicantId" id="hiddenApplicantId" value="" />
    <form:hidden path="paInd" id="hiddenPaInd" value="" />
    <input type="hidden" value = "${applicantDto.applProgressCde}" id ="applProgressCde"/>

    <input type="hidden" id="hiddenValidateText" value="<spring:message code='applicant.network_subscription.promocode.button.label.validate' />" />