Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSP未正确显示_Javascript_Jquery_Spring_Jsp_Spring Mvc - Fatal编程技术网

Javascript JSP未正确显示

Javascript JSP未正确显示,javascript,jquery,spring,jsp,spring-mvc,Javascript,Jquery,Spring,Jsp,Spring Mvc,我有一个JSP表单,它是在GET期间使用RequestMapping检索的。 页面的JSP页面结构如下所示: <div id="myDiv"> <script> function update() { update_fn(formId, ... more parameters); // this is a function defined in a .js file, this submits the form

我有一个JSP表单,它是在GET期间使用RequestMapping检索的。 页面的JSP页面结构如下所示:

<div id="myDiv">
     <script>
        function update() {
           update_fn(formId, ... more parameters);  // this is a function defined in a .js file, this submits the form
        }
     </script>

     <form:form ... >
        <button id="myButtonUniqueIDWithCurrentTime" onclick="update()">OK</button>
     </form:form>
</div>
}

这是post请求的Javascript

function updateGeneric(form, resultDivId, url) {
   var data = $("#" + form.getAttribute("id")).serialize();
   $.ajax({
    type : "POST",
    url : url,
    data : data,
    success : function(response) {
      console.log(response);
      $("#" + resultDivId).replaceWith(response);
    }
   });
}
如上面的代码所示,成功添加数据后,我将执行以下操作:

      form = new BackingForm();    // why is empty form not visible in JSP
      success = true;
      message = "Data Successfully Added";
现在,当我把这个表单放到ModelAndView中,然后用ModelAndView返回的'editForm.jsp'替换呈现的视图时,为什么页面中没有显示正确的表单? 我在jsp页面中获得了消息success的正确值。 但是表单包含来自旧提交的值,即使它被设置为新表单

注意,我不是在帖子后重定向。我只是用jquery替换一个HTML片段

你能指出我的代码有什么问题吗?有什么好方法可以做同样的事情


提前谢谢

您将AJAX请求视为Spring表单绑定。您应该删除
@modeldattribute
BindingResult
并创建一个更精简的API,它使用类似Jackson的东西来反序列化从前端作为
@RequestBody
传递的对象(而不是多部分数据)。您仍然可以使用
@Valid
和类似
ResponseEntity
的内容将正确的错误代码作为HTTP数据返回,这样前端就可以显示验证问题。让Ajax请求使用ModelAttribute有点不舒服。但我还不知道它有什么问题。我能够正确获取表单数据。我也可以保存数据。您能在回答中显示一些代码吗?您使用的是哪个版本的Spring?从这里的第3页开始:您还需要使用一个行为适当的
错误
回调来修改JavaScript。这也将在UI反馈分支之间提供更清晰的分离。谢谢我正在查看它。如果我理解正确,您是在建议我在POST请求主体中发送表单内容,我应该使用这种技术。那么我应该什么时候使用ModelAttribute呢?我可以让ajax请求与ModelAttribute一起工作吗?那ResponseBody呢?我打算再次发送整个表单,作为对错误的回复。这种方法很有效,我使用标签内联错误。我不会在成功时得到一个空的表单。即使我正在做backingform=新backingform();并使用正确的属性将其添加到模型中。
      form = new BackingForm();    // why is empty form not visible in JSP
      success = true;
      message = "Data Successfully Added";