假设,我是Spring MVC,JSP,Scripting / Ajax的新手
这是我的任务。
在Spring MVC中,我的jsp页面中有按钮,点击按钮,我想执行一些任务(控制器方法),它不会返回任何内容。我想要显示相同的页面。它不应该重新加载页面,也不应该重定向到其他页面。
这就是我在做什么......
我有一个包含很多按钮的页面。我正在使用bootstrap css和button标签。 喜欢,
开始
点击此按钮,我从控制器调用方法的Ajax,
$('#startApp').click(function() {
BootstrapDialog.show({
message : 'Sure ?!',
buttons : [ {
label : 'Ok',
cssClass : 'btn-default',
action : function(dialogItself) {
$.ajax({
type : "POST",
url : "/MyApp/startApp",
success : function(response) {
alert("Success");
}
});
dialogItself.close();
}
}, {
label : 'Close',
action : function(dialogItself) {
dialogItself.close();
}
} ]
});
这会调用控制器方法
@RequestMapping(value = "/startApp", method = RequestMethod.POST)
public void start() {// some operation.}
但是,当我这样做时,会执行操作但是在日志中我遇到错误,
根本原因调度程序:com.ibm.ws.jsp.webcontainerext.JSPErrorReport:JSPG0036E:无法找到资源/WEB-INF/views/startApp.jsp
问题,
答案 0 :(得分:1)
您需要向客户返回一些内容。 Spring默认尝试发送回startApp.jsp,因为这是url(/ startApp)中的内容。试试这个:这将发回一个HTTP OK状态(200)。
@RequestMapping("/startApp", method = RequestMethod.POST)
public ResponseEntity start()
{
return new ResponseEntity(HttpStatus.OK);
}
你也可以通过返回一个POJ(它将由Jackson JSON lib自动序列化)发回一个json,如果这是你想要的,或者甚至是一个简单的字符串作为html内容返回一个字符串。
答案 1 :(得分:0)
ajax
的目的是刷新页面的一部分。所以重新定向到另一个页面是没有意义的,你可以在控制器中将返回类型设为String
。
@RequestMapping(value = "/startApp", method = RequestMethod.POST)
@ResponseBody
public String start() {
// some operation
return "sucess"
}
在此处阅读我的答案Returning Hashmap From controller to JSP in Springmvc,了解如何在响应中传递参数