Java 必需的字符串参数';查询内容';在Spring MVC应用程序中使用Jquery发送多参数Ajax stringify请求时不存在
按提交按钮时,#dbresult将在选择选项和文本区域显示值。Java 必需的字符串参数';查询内容';在Spring MVC应用程序中使用Jquery发送多参数Ajax stringify请求时不存在,java,ajax,spring-mvc,Java,Ajax,Spring Mvc,按提交按钮时,#dbresult将在选择选项和文本区域显示值。 控制台中的错误消息: org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver logException 警告:已解析[org.springframework.web.bind.MissingServletRequestParameterException:所需字符串参数'querycontent'不存在] query.jsp <html
控制台中的错误消息:
org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver logException
警告:已解析[org.springframework.web.bind.MissingServletRequestParameterException:所需字符串参数'querycontent'不存在] query.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript"
src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<title>Query DB</title>
</head>
<body>
db:
<select name="dbname" id="dbname">
<option value="ibop_test">ibop_test</option>
<option value="ibop">ibop</option>
</select>
<br>
<textarea class="boxsizingBorder" id="sqlstr"></textarea>
<br>
<button onclick="showresult()">submit</button>
<div id="dbresult"></div>
</body>
<script type="text/javascript">
function showresult() {
document.getElementById("dbresult").innerHTML = "querying...";
var dbname = document.getElementById('dbname').value;
var sqlstr = document.getElementById('sqlstr').value;
var querycontent = JSON.stringify({
"dbname" : dbname,
"sqlstr" : sqlstr
});
console.log(querycontent); //In Chrome's developer tools window, we will see the logs
$
.ajax({
type : 'POST',
url : 'showresult',
contentType : 'application/json',
data : querycontent,
dataType : 'html',
success : function(msg) {
document.getElementById("dbresult").innerHTML = msg;
},
error : function() {
document.getElementById("dbresult").innerHTML = "querying failed!";
}
})
}
</script>
</html>
查询数据库
db:
ibop_试验
ibop
提交
函数showresult(){
document.getElementById(“dbresult”).innerHTML=“查询…”;
var dbname=document.getElementById('dbname')。值;
var sqlstr=document.getElementById('sqlstr').value;
var querycontent=JSON.stringify({
“dbname”:dbname,
“sqlstr”:sqlstr
});
log(querycontent);//在Chrome的开发者工具窗口中,我们将看到日志
$
.阿贾克斯({
键入:“POST”,
url:“showresult”,
contentType:'应用程序/json',
数据:querycontent,
数据类型:“html”,
成功:功能(msg){
document.getElementById(“dbresult”).innerHTML=msg;
},
错误:函数(){
document.getElementById(“dbresult”).innerHTML=“查询失败!”;
}
})
}
DBQueryController.java
@Controller
public class DBQueryController {
@RequestMapping(value = "/showresult", method = RequestMethod.POST)
public @ResponseBody String showResult(@RequestParam String querycontent){
String message = "db query result content.</br>";
return message;
}
}
@控制器
公共类DBQueryController{
@RequestMapping(value=“/showresult”,method=RequestMethod.POST)
public@responseBy字符串showResult(@RequestParam字符串querycontent){
String message=“db查询结果内容。”;
返回消息;
}
}
由于您在AJAX
调用中发送的是正文中的数据,因此@RequestParam
将无法工作。您需要使用@RequestBody
,如下所示:
@Controller
public class DBQueryController {
@RequestMapping(value = "/showresult", method = RequestMethod.POST)
public @ResponseBody String showResult(@RequestBody Map<String, String> querycontent){
String message = "db query result content.</br>";
return message;
}
}
回到错误,因为您没有在请求中作为参数传递querycontent
,这就是它抛出的原因
Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'querycontent' is not present]
您似乎在使用
@RequestParam
而不是@RequestBody
。
Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'querycontent' is not present]