我想在实际解析 View 之前检查它是否存在。这是我的 Controller ,其中有一些关于我希望它如何工作的评论。
@RequestMapping(value="/somethinghere/")
public String getSomething(Model inModel,
@RequestParam(value="one", defaultValue=Constant.EMPTY_STRING) String one,
@RequestParam(value="two", defaultValue = Constant.EMPTY_STRING) String two) {
String view = one + two;
if (a view with name equal to one + two exists) {
return view;
} else {
return "defaultview";
}
}
我想返回一个 View ,但只有当我验证确实存在定义了该名称的 View 时。我该怎么做?
最佳答案
首先,考虑 Spring 中 View 解析是如何完成的。假设您使用 InternalResourceViewResolver
,默认或显式声明,将创建一个 InternalResourceView
对象,并通过连接 InternalResourceViewResolver
的前缀、 View 名称(由您的 hanbdler 返回)和后缀来解析资源路径。
返回该View
对象。请注意,对于 InternalResourceViewResolver
,该对象不能为 null
,因此 ViewResolver
chaining无法实现。然后,DispatcherServlet
使用返回的 View
对象的 render()
方法创建 HTTP 响应。在这种情况下,它将使用 RequestDispatcher
并将 View 名称描述的资源转发给它。如果该资源不存在,Servlet
容器将生成 404 响应。
鉴于所有这些,除非您的 View
与 jsp
或相关资源完全不同,否则在容器实际使用 RequestDispatcher
转发请求之前,无法检查资源是否存在。
您将不得不重新考虑您的设计。
关于java - 如何检查 View 是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19278183/