【问题标题】:Spring form not able to bind the values when submitted through jquery通过jquery提交时Spring表单无法绑定值
【发布时间】:2012-10-31 20:53:31
【问题描述】:

我有一个有两种形式的 JSP。 form1 用于搜索结果。 form1返回的结果显示在form2中。 form2 用于编辑结果。 - fomr1 用于搜索号码

            <form:form name="form1" modelAttribute="form1" method="POST" action="doNumEnquiry.do"  id="form1">
            <form:input path="transactionID" type="text" id="trnxRef"/>
            <input type="submit"name="operation" id="searchBtn" value="search"/>
            <form:form>               

用于编辑的formr2在此处输入代码`数字

            <form:form name="form2" modelAttribute="form2" method="POST" id="form2">
            <c:forEach items="${form2.numberList}" var="obj">
            <form:radiobutton path="indexRadio" value="${obj.index}" id="indxRadio"/>
            <c:out value="${obj.customerRef}" />
            <input type="button" id="${obj.index}" name="operation" value="Go"/></span>
            </c:forEach>
            </form:form>
            </body>            

点击 Go 时调用一个 Jquery 函数来提交 form2。

            $("input[type=button][value=Go]").click(function() {
            var urlVal="doModifyNumEnq.do";
            $("#form2").attr("action",urlVal+"?operation=Go");
            $("#form2").submit();
            });

两个表单都在调用 NumberController。 Form1 是控制器的 doNumberSearch() 方法的模型属性。以下是控制器方法。

            @RequestMapping(value="doNumEnquiry.do", method=RequestMethod.POST, params="operation=Search")
            public ModelAndView doNumEnquiryWithSearchCriteria(@ModelAttribute("form1") NumberForm form, BindingResult result, HttpServletRequest request) {
            numberForm = nhNumberService.getNumEnquiryList(nhForm);
            return new ModelAndView("numberSearch", "form2", numberForm);
            }

Form2 是控制器的 doModifyNumberSearch() 方法的模型属性。当我试图从模型属性 form2 中获取 indexRadio 值时,它返回为 null。由于我的服务类正在引发空指针异常。

@RequestMapping(value="doModifyNumEnq.do",
method=RequestMethod.POST,params="operation=Go")
public ModelAndView doModifyNumberRequest(@ModelAttribute("form2") NumberForm form, 
    BindingResult result,HttpServletRequest request){
    if(form.getIndexRadio() !=null){
        indexRad=form.getIndexRadio();
    }
    numberForm = nhNumberService.getNumEnquiryList(indexRad);
    return new ModelAndView("exoectedresult", "form", numberForm);
}

请帮我解决问题。

【问题讨论】:

  • 请修正您的格式并添加NumberForm的来源以便我们提供帮助

标签: jquery spring-mvc


【解决方案1】:

我认为发布到服务器的是表单元素数据(不是表单本身)。您可以使用@RequestParam 直接在控制器方法中检索无线电值,如下所示

@RequestMapping(value="doModifyNumEnq.do",method=RequestMethod.POST,params="operation=Go") 
public ModelAndView doModifyNumberRequest(
    @RequestParam("indexRadio") String indexRad, 
    BindingResult result,
    HttpServletRequest request){ 


    numberForm = nhNumberService.getNumEnquiryList(indexRad); 
    return new ModelAndView("exoectedresult", "form", numberForm); 
}

【讨论】:

  • 如果我必须将单选按钮的值从后端设置到页面,那么反过来呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 2010-10-07
相关资源
最近更新 更多