我正在尝试使用Ajax post-method处理表单,我的控制器中的所有内容都能正常工作,除非我尝试调用model.addAttribute(" jspTagName",string);它没有用,几乎没有任何反应。 这是我的Ajax处理程序的代码
$("#filtring-form").submit(function(e){
var url = "/MessageCenterStatistics/results";
$.ajax({
type: "POST",
url: url,
data: $("#filtring-form").serialize(),
success: function(data){
//TODO:
}});}
以下是我在一个名为index.jsp的jsp文件中的JSP页面代码,我只是在这里向你展示一个简单的例子
<form id="filtring-form">
<label>From date </label><input type="Date" name="fromDate" require/>
<label>Up to date </label><input type="Date" name="toDate" required/>
<button type="submit" id="dosomething">Get Statistics</button>
<button type="reset">Reset </button>
</form>
<div>
<p id="tag1">${something}</p>
</div>
我只是在这里展示我的Java控制器的简化版本
@RequestMapping(value = "/results", method = RequestMethod.POST)
public String processform(Model model, @RequestParam("fromDate") String fromDate,
@RequestParam("toDate") String toDate) {
String s="Hello World!";
model.addAttribute("something", s);
return "index";
}
答案 0 :(得分:0)
这是因为您正在执行form
submit
并使您的网页成为reload
。
因此,在您关注ajax之后,您需要prevent
页面提交和重新加载的默认行为,以便您可以看到具有相关属性的更新模式。
$("#filtring-form").submit(function(e){
// prevent defaults
e.preventDefault();
$.ajax({
type: "POST",
url: "/MessageCenterStatistics/results",
data: $("#filtring-form").serialize(),
success: function(data){
//TODO:
}
});
return false;
}
此外,您不应从处理程序方法返回任何内容。设为void
而不是返回string
。当您返回字符串并且index
是视图jsp时,它会再次呈现页面,再次为您重新创建一个新模式。因此,如果您使用void
进行modal
并使用addAttribute()
修改@RequestMapping(value = "/results", method = RequestMethod.POST)
public void processform(Model model, @RequestParam("fromDate") String fromDate,
@RequestParam("toDate") String toDate) {
String s="Hello World!";
model.addAttribute("something", s);
}
,那么您将在jsp视图中看到它。
pixman