2009-05-11 2 views
2

Spring MVC를 사용하여 "컨벤션 오버 규칙"전체를 시험하고있다. Spring은 이것을 도와 줄 모든 종류의 도구를 가지고 있으며, 나는 그것들 중 일부를 시도하고있다. 그러나 Spring의 요구 사항과 일치하지 않는 팀 구성 문제가 발생했습니다.Spring MVC DefaultRequestToViewNameTranslator 대문자 사용 문제

문제는 "http://ourSite/SomePage.do"과 같은 URL을 "SomePageController"를 통해 입력하고 "somePage.jsp"로 렌더링한다는 것입니다. SomePage.do는 대문자로 시작하고 somePage.jsp는 대문자로 시작하지 않습니다. Spring의 DefaultRequestToViewNameTranslator는 대문자를 유지하고 있으며, ViewResolvers는 첫 번째 문자를 소문자로 만드는 방법을 알 수 없습니다.

NameTranslator 또는 ViewResolver를 구성하여 첫 번째 문자를 소문자로 만들 수있는 방법이 있습니까?

답변

3

Javadocs for DispatcherServlet는 'viewNameTranslator가'결정 방법을 지정 뷰 또는 뷰 이름은 사용자가 제공되지 않으면, 구성된 RequestToViewNameTranslator는 뷰 이름에 현재 요청을 변환합니다

. 해당 bean 이름은 "viewNameTranslator"입니다. 기본값은 DefaultRequestToViewNameTranslator입니다.

그래서 "보기 이름 변환기"동작이 약간 다를 경우 고유 한 인스턴스를 제공해야합니다. 아마도 DefaultRequestToViewNameTranslator의 하위 클래스를 사용하여 파일 이름의 대소 문자에 대한 논리를 쉽게 추가 할 수 있습니다.

솔직히 말해서 컨트롤러가 명명 된 뷰를 반환했으며 URI와 동일한 뷰 이름을 사용하지 않아도된다는 제안을 전합니다. 이를 통해 여러 URL/컨트롤러에 대해 동일한보기를 사용할 수 있으며 URL에서 "보기"개념을 완전히 추상화 할 수 있습니다.

(상당히 솔직히 말해서, 나는 꽤 큰 응용 프로그램에서 약 5 개월 동안 Spring MVC를 사용했고이 DefaultRequestToViewNameTranslator 클래스가 프레임 워크에 있거나 "viewNameTranslator"가 DispatherServlet 사용하게됩니다!)