2013-10-09 4 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을 사용한다고 가정하면 개체가 만들어지고 InternalResourceViewResolver의 접두사, 뷰 이름 (hanbdler에서 반환 됨) 및 접미사를 연결하여 리소스에 대한 경로가 확인됩니다.

그게 View 개체가 반환됩니다. InternalResourceViewResolver과 함께 그 객체는 null 일 수 없으므로 ViewResolver chaining을 얻을 수 없습니다. 그런 다음 DispatcherServlet은 반환 된 View 개체의 render() 메서드를 사용하여 HTTP 응답을 만듭니다. 이 경우 RequestDispatcher을 사용하고 뷰 이름으로 설명 된 리소스를 전달합니다. 해당 자원이없는 경우 Servlet 컨테이너는 404 응답을 생성합니다. 당신의 Viewjsp 또는 관련 리소스는 완전히 다른 무언가가 아닌

는 컨테이너가 실제로 RequestDispatcher로 요청을 전달합니다 때까지 자원이 존재하는지 확인하는 방법은 없습니다, 모든 것을 감안할 때.

디자인을 다시 생각해야합니다.

관련 문제