jquery - @ModelAttribute 出现奇怪的逗号附加问题

标签 jquery spring-mvc

平台:Spring 3.1.2、Tomcat 7.0.30

从 3.0 升级到 Spring 3.1 后出现此问题

我有一个正常的启用 Spring 的表单:

<c:url value='/healthcare/insurance/policy/save' var="url" />
<form:form commandName="insurancePolicy" action="${url }" method="POST" cssClass="form-horizontal">
  <div class="module">
      <div class="header">
          <strong><spring:message code="insurance.policy.view.formbox" /> </strong>
      </div>
      <div class="module-content row-fluid">
          <div class="span4">

              <div class="control-group">
                  <label class="control-label"><spring:message code="insurance.policy.view.policyId" /></label>
                  <div class="controls">
                      <form:input path="policyId" cssClass="span10" readonly="true" />
                  </div>
              </div>

              <div class="control-group">
                  <label class="control-label"><spring:message code="insurance.policy.view.tpaId" /></label>
                  <div class="controls">
                      <form:select path="tpaId" items="${tpas }" itemLabel="tpaName" itemValue="tpaId" cssClass="span10" />
                  </div>
              </div>

等等。

我提交的方式是:

function save(){
    $("#insurancePolicy").submit();

}

我捕获的方式是通过位于抽象类中的 Controller ,如下所示:

public abstract class AbstractCrudViewController<T, PK extends Number, META extends T> extends AbstractViewController {

@SuppressWarnings("unchecked")
    @RequestMapping(value="/save", method = RequestMethod.POST)
    protected String save(@ModelAttribute T t, Model model, HttpServletRequest request){

        logger.debug("Executing save for model: {}", t.toString());

        try{

            if (getPrimaryKeyValue(t) == null || ((Number) getPrimaryKeyValue(t)).intValue() <=0 ){
                logger.debug("Creating new record");
                PK pk =  getCrudService().create(t);
                logger.debug("New record created with ID: {}", pk);
                ViewUtil.addSuccess(model, "crud.saveSuccess", request, getPrimaryKeyValue(t));

            }

初始化绑定(bind)器在 AbstractViewController 中声明为:

public abstract class AbstractViewController {

     @InitBinder
     public void initBinder(WebDataBinder binder) {
        String dateFormat = "dd/MM/yyyy";       
        binder.registerCustomEditor(DateTime.class, new DateTimeEditor(dateFormat,true));
     }

}

好的。现在的问题是:我正在保存表单,日志显示:

DEBUG:com.keype.hawk.hr.mvc.StaffViewController[save]:Executing save for model: Staff [staffId=null, firstName=Steve,, lastName=Harris,, middleName=,, nationality=AF, dob=2012-09-11T00:00:00.000+03:00, status=1000, title=Mr, address1=, address2=, city=, state=, postalCode=, country=AF, homePhoneAreaCode=, homePhone=,, homePhoneExt=, homePhoneAllowSoliciation=, workPhoneAreaCode=, workPhone=null, workPhoneExt=, workPhoneAllowSoliciation=, fax=, mobileAreaCode=, mobile=, mobileAllowSolicitation=, email=null, joiningDate=null, gender=, govtId=, maritalStatus=, passportNumber=, passportExpiryDate=null, totalWorkExperience=, notes=, staffCreated=null, staffModified=null, dateCreated=null, dateModified=null]

注意每个字段后面的逗号。

为了调试,我使用 jquery serialize 序列化了表单并进行了检查,发现其中没有逗号。然后 ajax 将此数据发布到服务器,并在 @ModelAttribute 完成其工作后,附加逗号。

有什么想法吗?与 Init 绑定(bind)器有关的东西吗?

最佳答案

我遇到了同样的问题,但 Twitter Bootstrap 不是原因。

就我而言,我们有 2 个具有相同名称属性的输入。在这种情况下,这两个输入的数据将作为数组发送。由于我的输入为空,因此数组为 myName=,

关于jquery - @ModelAttribute 出现奇怪的逗号附加问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12395490/

相关文章:

javascript - Jquery从php/json文件加载数据并将新内容附加到div以进行聊天

javascript - Angular - 数据更新后运行 jQuery

java - 限制某些数据访问的正确方法是什么

Hibernate 不在一对多关系中插入列

Spring HTTP Status 400 - 客户端发送的请求在语法上不正确(添加日期输入时)

javascript - 'for' 循环内的 Ajax 调用

javascript - 从 Bootstrap 模态窗口中删除模态属性

javascript - 如何以正确的方式包含这个js

java - 带预身份验证的 Spring Security 自定义异常处理程序

spring - 使用 thymeleaf 将表单数据发布到使用 @ModelAttribute (复杂对象)的 Controller