我希望拥有相同的请求映射,但根据文件扩展名解析为不同的 View 。我有两个 JSP,一个呈现 HTML,另一个呈现 XML。根据文件扩展名,我应该解析为相应的 jsp。
这是我的 Controller :
@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
}
}
我的 WebApp 有以下 y 根目录:
/jsp/filemanagement/list.jsp
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
..
/jsp/filemanagement/listXml.jsp
<?xml version="1.0" encoding="UTF-8"?>
<%@page contentType="text/xml" pageEncoding="UTF-8"%>
....
这就是我在 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>
最佳答案
看看 ContentNegotiatingViewResolver
。来自javadoc :
This view resolver uses the requested media type to select a suitable View for a request.
If the requested path has a file extension and if the
setFavorPathExtension(boolean)
property is true, the mediaTypes property is inspected for a matching media type.
还有一个section of the ref manual覆盖这个解析器。
关于java - 两种不同的 View 取决于使用 Spring MVC 3 的 URL 文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6551200/