2013-10-09 134 views
1

我想在我實際解決它之前檢查視圖是否存在。這裏是我的控制器,對我如何工作有一些評論。如何檢查視圖是否存在?

@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"; 
     }     
} 

我想返回一個視圖,但只有當我驗證確實存在一個定義了該名稱的視圖時。我該怎麼做呢?

+0

視圖是靜態的,它們不應因任何原因而丟失。 –

回答

1

首先,考慮如何在Spring中完成視圖分辨率。假設您正在使用InternalResourceViewResolver,默認情況下或顯式聲明,將創建一個InternalResourceView對象,並通過連接InternalResourceViewResolver的前綴,視圖名稱(由您的hanbdler返回)和後綴來解析資源路徑。

View對象被返回。請注意,由於InternalResourceViewResolver該對象不能爲null,因此無法實現ViewResolver chainingDispatcherServlet然後使用返回的View對象的render()方法創建HTTP響應。在這種情況下,它將使用RequestDispatcher並轉發視圖名稱所描述的資源。如果該資源不存在,則Servlet容器將生成404響應。

鑑於這一切,除非你是View東西比一個jsp或相關資源的完全不同,沒有辦法來檢查是否存在的資源,直到容器居然轉發了RequestDispatcher請求。您將不得不重新考慮您的設計。