我想重新渲染部分页面而不重新加载页面。
我将使用ajax请求来完成它。
我发现的所有示例都使用@ResponseBody
注释,并在客户端javaScript句柄xml或json上。
我的原因 - 获取htm片段并替换我的部分页面
结构:
bigJsp.jsp
...
incude small.jsp
...
我想要重新呈现small.jsp
并在我的页面上将其替换而不重新加载页面。
我找不到这个例子。你能救我吗?
答案 0 :(得分:0)
尝试执行以下操作:
1)将include small.jsp替换为某个div。
<div id="smallContent"></div>
2)创建一个创建正确视图的控制器方法:
@RequestMapping(value = "small", method = RequestMethod.GET)
public String testSmall(Model model) {
model.addAttribute("small_message", new Date().toString());
return "small";
}
3)创建小视图(small.jsp):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<div style="background: red">
My message: ${small_message}
</div>
4)使用ajax获取div的html内容:
<html>
<body>
<script src="http://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
<script>
function reloadSmall() {
$.get("/small", function(response) {
$("#smallContent").html(response);
});
}
</script>
<div id="smallContent" style="background: green"></div>
<button onclick="reloadSmall()">Click me</button>
</body>
</html>
答案 1 :(得分:0)
你应该有一个控制器方法返回 ModelAndView ,例如
@RequestMapping(value = "/small", method = RequestMethod.GET)
public ModelAndView smallJSP() {
ModelAndView modelAndView = new ModelAndView("small");
return modelAndView;
}
控制器将在默认位置搜索名称为small的视图,并使用默认后缀(具体取决于您的配置,例如/WEB-INF/views/small.jsp
)。比你应该简单地用适当的ajax调用调用该方法,例如通过jquery
$.ajax({
url:"/small",
dataType: "html",
type: "GET",
success: function (msg) {
$(".responseDiv").html(msg);// place your response to some div
}
});