两个不同的视图取决于使用Spring MVC 3的URL文件扩展名

Alf*_*rio 3 java spring spring-mvc

我希望具有相同的请求映射,但根据文件扩展名解析为不同的视图.我有两个JSP,一个呈现HTML,另一个呈现XML.根据文件扩展名,我应该解析为相应的jsp.

这是我的控制器:

@Controller
public class FileManagementController {

    @RequestMapping(value="/filemanagements", method=RequestMethod.GET)
    public ModelAndView list() {
        //if file extension .xml return  /filemanagement/listXml
        //if no file extension present return /filemanagement/list
    }

}
Run Code Online (Sandbox Code Playgroud)

我有以下y我的WebApp:

/jsp/filemanagement/list.jsp

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
Run Code Online (Sandbox Code Playgroud)

..

/jsp/filemanagement/listXml.jsp

<?xml version="1.0" encoding="UTF-8"?>
<%@page contentType="text/xml" pageEncoding="UTF-8"%>
Run Code Online (Sandbox Code Playgroud)

....

这就是我在servletContext.xml中配置ViewResolver的方法:

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
</bean>
Run Code Online (Sandbox Code Playgroud)

ska*_*man 5

看看ContentNegotiatingViewResolver.来自javadoc:

此视图解析程序使用请求的媒体类型为请求选择合适的视图.

如果请求的路径具有文件扩展名,并且setFavorPathExtension(boolean)属性为true,则检查mediaTypes属性是否匹配媒体类型.

还有一部分参考手册涵盖了这个解析器.