Domanda

Ovunque guardo sempre la stessa spiegazione pop-up.
Configura il risolutore di viste.

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

E quindi inserisci un file nel percorso di classe denominato view.properties con alcune coppie chiave-valore (non preoccuparti dei nomi).

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

Cosa significano logout.class e logout.url ?
In che modo ResourceBundleViewResolver utilizza le coppie chiave-valore nel file?
Il mio obiettivo è che quando qualcuno entra nell'URI myserver / myapp / logout.htm il file logout.jsp viene servito.

È stato utile?

Soluzione

ResourceBundleViewResolver utilizza la chiave / vals in views.properties per creare bean di visualizzazione (effettivamente creati in un contesto interno dell'applicazione). Il nome del bean di visualizzazione nel tuo esempio sarà " logout " e sarà un bean di tipo JstlView. JstlView ha un attributo chiamato URL che sarà impostato su " WEB-INF / jsp / logout.jsp " ;. Puoi impostare qualsiasi attributo sulla classe di visualizzazione in modo simile.

Ciò che sembra mancare è il livello del controller / gestore. Se vuoi che /myapp/logout.htm serva logout.jsp, devi mappare un controller in /myapp/logout.htm e quel controller deve restituire il nome della vista " logout " ;. ResourceBundleViewResolver verrà quindi consultato per un bean con quel nome e restituirà l'istanza di JstlView.

Altri suggerimenti

Per rispondere alla tua domanda logout è il nome della vista ottenuto dall'oggetto ModelAndView restituito dal controller. Se riscontri problemi, molti hanno bisogno della seguente configurazione aggiuntiva.

Devi aggiungere un mapping servlet per * .htm nel tuo 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 si desidera eseguire il mapping direttamente al * .jsp senza creare un controller personalizzato, è necessario aggiungere il seguente bean al proprio contesto Spring:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top