문제

어디를 가든 항상 같은 설명 팝업이 나타납니다.
뷰 확인자를 구성합니다.

<bean id="viewMappings"
      class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <property name="basename" value="views" />
</bean>

그런 다음 일부 키-값 쌍(이름은 신경 쓰지 마세요)과 함께 view.properties라는 클래스 경로에 파일을 넣습니다.

logout.class=org.springframework.web.servlet.view.JstlView
logout.url=WEB-INF/jsp/logout.jsp

무엇을 logout.class 그리고 logout.url 평균?
어떻게 ResourceBundleViewResolver 파일의 키-값 쌍을 사용합니까?
내 목표는 누군가가 URI를 입력할 때 myserver/myapp/logout.htm 파일 logout.jsp 서비스를 받습니다.

도움이 되었습니까?

해결책

ResourceBundleViewResolver는 views.properties의 키/값을 사용하여 뷰 빈(실제로 내부 애플리케이션 컨텍스트에서 생성됨)을 생성합니다.예제에서 뷰 빈의 이름은 "logout"이고 JstlView 유형의 빈이 됩니다.JstlView에는 "WEB-INF/jsp/logout.jsp"로 설정되는 URL이라는 속성이 있습니다.비슷한 방식으로 뷰 클래스의 속성을 설정할 수 있습니다.

누락된 것으로 보이는 것은 컨트롤러/핸들러 레이어입니다./myapp/logout.htm이 logout.jsp를 제공하도록 하려면 컨트롤러를 /myapp/logout.htm에 매핑해야 하며 해당 컨트롤러는 보기 이름 "logout"을 반환해야 합니다.그런 다음 ResourceBundleViewResolver는 해당 이름의 Bean을 참조하고 JstlView 인스턴스를 반환합니다.

다른 팁

귀하의 질문에 답변하려면 logout 컨트롤러가 반환한 ModelAndView 객체에서 얻은 뷰 이름입니다.문제가 있는 경우 다음과 같은 추가 구성이 필요합니다.

다음에 대한 서블릿 매핑을 추가해야 합니다. *.htm 당신의 web.xml:

    <web-app>
        <servlet>
            <servlet-name>htm</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <oad-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>htm</servlet-name>
            <url-pattern>*.htm</url-pattern>
        </servlet-mapping>
    </web-app>

그리고 직접 매핑하고 싶다면 *.jsp 사용자 정의 컨트롤러를 생성하지 않고 Spring 컨텍스트에 다음 빈을 추가해야 합니다.

    <bean id="urlFilenameController"
        class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top