Следуя советам скаффмана. Я решил это, используя ContentNegotiatingViewResolver.
servletContext.xml:
<bean id="resourceResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"/>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<mvc:annotation-driven/>
Средство распознавания автоматически выбирается ContentNegotiatingViewResolver.
Контроллер:
@Controller
@RequestMapping("/filemanagements")
public class FileManagementController {
@RequestMapping(method=RequestMethod.GET)
public ModelAndView list(@RequestParam(required=false) String contentType) {
return new ModelAndView(baseLogicView + "/list");
}
private static final String baseLogicView = "/filemanagement";
}
Эти сообщения:
/WEB-INF/jsp/filemanagements/list.jsp
/WEB-INF/jsp/filemanagements/listXml.jsp
Представления комплекта ресурсов.properties:
/filemanagement/list.(class)=org.springframework.web.servlet.view.JstlView
/filemanagement/list.url=/WEB-INF/jsp/filemanagement/listXml.jsp
/filemanagement/list.contentType=text/xml
Необходимо было указать там contentType, потому что если вы этого не сделаете, по умолчанию это "text / html; charset = ISO-8859-1" , даже если вы установили <% @ page contentType = "text / xml"%> в JSP, который отображает XML.
После этого я мог сделать следующие запросы:
http://localhost:8080/filemanagement-web/filemanagements (list.jsp)
http://localhost:8080/filemanagement-web/filemanagements.html (list.jsp)
http://localhost:8080/filemanagement-web/filemanagements.xml (listXml.jsp)