我正在使用Spring3MVC构建一个web应用程序,它有一个通用的布局和一个经常更改/刷新的"content“div。内容标记在自己的tile中,我希望能够通过AJAX刷新该Tile,而无需刷新整个页面。我知道如何从客户端激发AJAX请求并在控制器中处理它。我主要对Spring的配置(视图、视图解析器等)感到困惑。有谁有一个例子吗?
发布于 2012-08-31 15:50:17
基本上,您可以创建一个仅包含所需内容的tiles视图,而不包含周围的HTML框架,并在处理ajax请求的控制器中呈现此视图/tiles。
假设您有一个页面foo.jsp。调用http://example.com/myapp/foo时,应呈现以foo.jsp作为主体内容的整个html页面。在调用http://example.com/myapp/ajax/foo时,应该只发送foo.jsp而不发送整个HTML框架,这样客户端就可以通过ajax加载并替换页面中的一部分。
您最终将得到两个视图定义,一个在整个页面中嵌入foo.jsp,另一个仅包含foo.jsp本身。app-layout.jsp将包含具有"body“属性的整个HTML框架。
<definition name="foo" template="/WEB-INF/layouts/app-layout.jspx">
<put-attribute name="body">
<definition template="/WEB-INF/views/foo.jsp">
<put-attribute name="message" value="hello"/>
</definition>
</put-attribute>
</definition>
<definition name="ajax.foo" template="/WEB-INF/views/foo.jsp">
<put-attribute name="message" value="hello"/>
</definition>处理URL的控制器将返回视图"ajax.foo",处理URL /foo的控制器将返回视图"foo“。
@Controller
@RequestMapping("/ajax")
public void class AjaxController {
@RequestMapping("/foo")
public String foo() {
return "ajax.foo";
}
}
@Controller
@RequestMapping("/")
public void class AppController {
@RequestMapping("/foo")
public String foo() {
return "foo";
}
}https://stackoverflow.com/questions/12197230
复制相似问题