java - 如何检查 View 是否存在?

标签 java spring spring-mvc

我想在实际解析 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 响应。

鉴于所有这些,除非您的 Viewjsp 或相关资源完全不同,否则在容器实际使用 RequestDispatcher 转发请求之前,无法检查资源是否存在。

您将不得不重新考虑您的设计。

关于java - 如何检查 View 是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19278183/

相关文章:

java - 堆栈添加机不添加但挂起等待更多参数

java - 泛型数组创建

java - 从 Javascript 访问 Spring WebFlow EL 变量

mysql - eclipselink-2.5.2 Spring 4.1.1 没有事务当前处于事件状态错误

spring - 为什么我们声明</context :component-scan>separately in applicationContext. xml和dispatcher-servlet.xml

java - 定义 OpenSessionInViewFilter 时出错

java - JmsTemplate 没有发送超时

java - 如何在Java类中访问HTTP请求

java - Spring Boot - ErrorPageFilter 找不到 RequestDispatcher

spring - JSF 2.0、Spring 3.1 和 Hibernate 4.0 集成