2012-05-09 5 views
1

이것이 올바른 질문이 아닌 경우 사전에 사과드립니다 ...하지만 당황 스럽습니다.HTML 3.1 페이지의 이름을 반환하는 Spring 3.1 컨트롤러가 작동할까요?

우리는 새로운 웹 사이트에서 Spring 3.1.1을 사용하고 있습니다. 그것을 구축하는 팀은 잘, 경험이 없습니다.

는이 코드로 실행 :

public String signOut(@ModelAttribute("state") State state, Model model) { 
    // useful stuff here 
    return "signOut.html"; 
} 

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/jsp/" /> 
    <property name="suffix" value=".jspx" /> 
</bean> 

그러나, 우리가 만든 JSP 파일의 이름 (HTML은 이름의 일부가 아닌) /WEB-INF/jsp/signOut.jspx이다.

놀랍게도 - 이것은 실제로 작동합니다. InternalViewResolver는 예상대로 /WEB-INF/jsp/signOut.html.jspx을 반환합니다.

스프링은 어떤 시점에서 signOut.html.jspx에 대해 컴파일 된 JSP 서블릿을 찾지 못했을 것이라고 생각했지만, 괜찮은 것으로 보인다.

어떨까요? 그리고 어떤 피해를 입을까요?

답변

2

글쎄, 실제로 모든 것이 설계된대로 작동합니다. 컨트롤러에서 뷰 이름 (이 경우)을 반환하거나 뷰 이름을 캡슐화하는 View 인스턴스 또는 뷰와 모델 모두를 캡슐화하는 ModelAndView을 반환 할 수 있습니다.

String 반환 값은 보기 이름을 의미합니다. 그래서 Spring은 뷰 이름을 실제 뷰 파일로 변환하기 위해 ViewResolver 추상화를 사용한다. prefixsuffix 속성은 컨트롤러에서 정규화 된 파일 경로를 반환 할 필요가 없도록 구성됩니다. 접두어와 접미사가 적용되고 Spring은 적절한 위치에 뷰 파일을 찾습니다.

정확히 당신에게 놀라운 점은 무엇입니까?

+0

뷰가 "/WEB-INF/jsp/signOut.html.jspx"라는 JSP 파일의 정확한 이름이 아니라는 것이 놀랍습니다. 나는 signOut.html.jspx에서 컴파일 된 서블릿이 012Open.jspx에서 컴파일 된 서블릿과 같은 이름이 아님 – Jay

+0

@Jay : 프로젝트에/WEB-INF/jsp/signOut.html.jspx 파일이 없다는 것을 의미합니까? –

+0

맞음 - 방금 추가했습니다. 편집으로 - 사과해라. – Jay