2014-04-14 9 views
7

Ho iniziato a studiare Spring MVC e tomcat just.Non riesco a trovare una risposta che non possa risolvere la vista con il nome 'index' nel servlet con nome 'DispatcherServlet'

Desidero visualizzare la pagina html di Spring e ThymeLeaf VewTemplate Engine.

Ma non funziona.

sotto il mio file di configurazione e controller.

web.xml File

<servlet> 
    <servlet-name>DispatcherServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>DispatcherServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

<filter> 
    <filter-name>EncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>EncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

/webapp/WEB-INF/DispatcherServlet-serlvet.xml

<context:component-scan base-package="com.everblog.controller" /> 

<!-- ViewResolver be configured by thymeleaf --> 
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> 
    <property name="prefix" value="/WEB-INF/view/" /> 
    <property name="suffix" value=".html" /> 
    <property name="templateMode" value="HTML5" /> 
    <property name="characterEncoding" value="UTF-8" /> 
</bean> 

<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine"> 
    <property name="templateResolver" ref="templateResolver" /> 
</bean> 

<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver"> 
    <property name="templateEngine" ref="templateEngine" /> 
    <property name="order" value="1" /> 
    <property name="viewNames" value="*.html" /> 
</bean> 

e regolatore

@Controller 
public class PostItemController { 

    @RequestMapping(value="/hello", method = RequestMethod.GET) 
    public String helloWorld() { 
     System.out.println("IS IN"); 
     return "index"; 
    } 
} 

ho digitato localhost : 9000/ciao su b rowser, quindi il browser visualizza questo messaggio di errore. HTTP stato 500 - Impossibile risolvere vista con il nome di 'indice' in servlet con il nome 'DispatcherServlet'

tipo di rapporto di eccezione

messaggio Impossibile risolvere vista con 'indice' nome in servlet con il nome ' DispatcherServlet '

descrizione Il server ha rilevato un errore interno che gli ha impedito di soddisfare questa richiesta.

eccezione

javax.servlet.ServletException: Impossibile risolvere vista con il nome 'index' in servlet con il nome 'DispatcherServlet' org.springframework.web.servlet.DispatcherServlet.render (DispatcherServlet .java: 1190) org.springframework.web.servlet.DispatcherServlet.processDispatchResult (DispatcherServlet.java:992) org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:939) org.springframework.web. servlet.DispatcherServlet.doService (DispatcherServle t.java:856) org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:953) org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:844) javax.servlet.http .HttpServlet.service (HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:829) javax.servlet.http.HttpServlet.service (HttpServlet.java:728) org. apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) note La traccia stack completa della causa principale i s disponibile nei registri Apache Tomcat/7.0.50.

indice

.html si trova su/webapp/WEB-INF/view/

Cosa devo fare Configurare più?

+0

Forse il helloWorld() è necessario restituire "index.html" (tratto da http://stackoverflow.com/ domande/13105048/spring-with-thymeleaf-view-integration) – Luciano

+0

'localhost: 9000/hello' ti manca il nome del contesto (nome del progetto) in url? –

risposta

10

Dai un'occhiata alla javadoc di ThymeleafViewResolver#setViewNames(String[]). Essa afferma

specificare un insieme di modelli di nomi che verranno applicati per determinare se un nome vista restituito da un controller sarà risolto da questo resolver o no.

il nome della vista i tuoi metodo restituisce @Controller gestore viene

return "index"; 

Che visualizzare nome sicuramente non corrisponde al modello

*.html 

Si dovrà utilizzare

return "index.html"; 

per Spring per usare il tuo ThymeleafViewResolver, anche se questo fallirebbe in una fase successiva poiché non esiste JSP così risolto.

Invece, è sufficiente liberarsi dello viewNames<property> o correggerlo di conseguenza con il proprio metodo @Controller.

-1

forse il modello formica che hai dato nella tua servlet dispatcher non permette la visualizzazione risolutore per risolvere la vista ... cambiare il modello url / invece di /* nel vostro servlet dispatcher.

+0

A meno che non abbiano configurato un gestore predefinito, il tuo suggerimento peggiorerà le cose. Il modello '/ *' gestirà anche la vista invece di Lett il servlet JSP gestirlo. –

0

sostituire l'ultimo chicco solo thymeleaf resolver con questo codice che funzionerà bene

<beans:bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver"> 
    <beans:property name="templateEngine" ref="templateEngine" /> 

</beans:bean> 
Problemi correlati