Pergunta

Em todos os lugares que eu olho sempre a mesma explicação pop-ups.
Configurar o resolvedor vista.

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

E, em seguida, colocar um arquivo no classpath chamado view.properties com alguns pares chave-valor (não se importa os nomes).

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

O que logout.class e logout.url média?
Como é que ResourceBundleViewResolver usa os pares chave-valor no arquivo?
Meu objetivo é que quando alguém entra na URI myserver/myapp/logout.htm o logout.jsp arquivo é servido.

Foi útil?

Solução

ResourceBundleViewResolver usa a chave / vals em views.properties para criar vista feijão (na verdade criadas em um contexto de aplicação interna). O nome do feijão vista no seu exemplo será "logout" e será um feijão do tipo JstlView. JstlView tem um atributo chamado URL que será definido como "WEB-INF / jsp / logout.jsp". Você pode definir qualquer atributo na classe de vista de uma forma similar.

O que você parece estar faltando é a sua camada de controlador / manipulador. Se você quiser /myapp/logout.htm para servir logout.jsp, você deve mapear um controlador em /myapp/logout.htm e que controlador precisa retornar o nome da visão "logout". O ResourceBundleViewResolver irá então ser consultado para um feijão de mesmo nome, e retornar a instância do JstlView.

Outras dicas

Para responder à sua logout questão é o nome da visão obtida do objeto ModelAndView devolvido pelo controlador. Se você está tendo problemas você muitas necessidade a seguinte configuração adicional.

Você precisa adicionar um mapeamento de servlet para *.htm em sua 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>

E se você deseja mapear diretamente para o *.jsp sem criar um controlador personalizado, então você precisa adicionar o seguinte feijão ao seu contexto Primavera:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top