internalresourceviewresolver如何运作?

时间:2013-06-14 09:03:49

标签: spring-mvc

当我的控制器类没有返回modelandview对象时,internalresourceviewresolver如何工作?它如何映射到视图?

这是控制器类的代码片段:

@RequestMapping(value = "/abc", method = RequestMethod.GET)
public @ResponseBody
List<Map<String, Object>> getabc() 
{
    return jdbcDa.abc();
}

以下是调度程序servlet的代码片段:

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

2 个答案:

答案 0 :(得分:1)

此处不涉及内部视图解析程序,您已使用@ResponseBody进行了注释,并且该方法未返回字符串/视图名称。

返回的数据不会映射到视图。它将转换为json或xml,具体取决于原始请求的内容类型。

使用javascript异步调用使用@ResponseBody注释的方法,然后在Web应用程序中将返回的数据添加到dom的特定部分。

答案 1 :(得分:0)

您的方法由@ResponseBody注释,因此该方法会将List<Map<String, Object>>转换为JSON,并且不会映射到视图。

如果要映射日期以查看,则可以从此界面@RequestMapping(value = "/abc", method = RequestMethod.GET)使用AJAX请求日期,并使用Javascript在视图上显示日期。就像这个片段:

$.getJSON('/abc', function (date) {
     var s = "";
     $.each(date, function (i, obj) {
          //use javascript to add date to variable s
     });
     //add s to view element
     $("#tag-list").append(s);
});