如何从jsp/ajax
中的spring controller
获取一条简单的消息(如msg),并将response
(如resp)从控制器返回给jsp,而jsp可以获取此消息使用ajax进行响应并在<div>
?
以下示例可能不正确,特别是ajax部分,感谢修改:
这是我的控制器:
@RequestMapping("/testAjax")
protected ModelAndView testActiveX(HttpServletRequest request,HttpServletResponse response){
ModelAndView model = new ModelAndView("test_Ajax");
Date date=new Date();
model.addObject("date",date.toString());
return model;
}
这是我的test_Ajax.jsp页面:
<html lang="en">
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<head>
<spring:url value="/resources/jquery-3.1.1.min.js" var="jqueryJs"></spring:url>
<script src="${jqueryJs}"></script>
<script >
$(document).ready(function($)
{
$("#translate").click(translation());
});
function translation() {
var words = $("input").val();
$.ajax({
url: '/WEB-INF/jsp/test_Ajax.jsp',
data: {
word: words
},
success: function (data) {
$("#container").html(data);
},
type: 'GET'
});
}
</script>
</head>
<body>
<input type="text" id="input" name="inputword"><br/><br/> <-- used to provide msg --%>
<button id="translate">Translate</button><br/><br/>
<div id="container"></div>
</body>
</html>
答案 0 :(得分:0)
正如我所看到的,你在ajax调用url中有一个错误,因为你正试图访问WEB-INF文件夹中的jsp。当您使用带有@RequestMapping的spring mvc时,必须将ajax调用指向此映射所侦听的url。
在您的情况下,您必须更改URL以指向servlet端点,这是为您提供视图的组合html的actor $就({ url:'/ testAjax', 数据:{ 单词:单词 }, 成功:函数(数据){ $( “#集装箱”)HTML(数据); }, 类型:'GET' });
可能会出现另一个错误,因为您的请求映射可能位于上下文中(因此您可以将requestContext concat放入请求映射网址。
希望这有帮助
答案 1 :(得分:0)
您发布的代码应使用ajax调用中正确的url。 Java应用程序有一个上下文(URI的开头),所以你在告诉url时必须注意这一点(如果你使用的是web 3.0规范,你可以使用像$ {contextPath}这样的jstl表达式来获取这个值。) p>
您还可以接收查询参数(通过post或get发送)向控制器方法添加参数并使用@QueryParam对其进行注释,该参数接收要映射的参数名称(如果您有JacksonMapper,这也适用于复杂的json对象) bean在spring上下文中定义)。所以举个例子。接收你必须添加的单词字符串
@QueryParam("word") String word
到方法签名。 你也可以直接使用该方法中的HttpServletRequest,并获得这样的param内容:
String word = request.getParam("word");
控制器内部。