2012-03-01 14 views
9

Mattina,Spring MVC - Mappa controller contesto root (/) durante l'utilizzo di MVC: risorse

hanno problemi di mappatura un controller a/(cioè localhost: 8080/someApp/sarebbe mappare @Controller ("/")), mentre utilizzando anche MVC: risorse

mappatura web.xml:

<servlet-mapping> 
    <servlet-name>springServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 

MVC: risorse

<mvc:resources mapping="/resources/**" location="/resources/" /> 

Il server carica la pagina in modo corretto, ma quando ho mappa per un IE risorsa

<link type="text/css" rel="stylesheet" href="<c:url value="/resources/css/blueprint/print.css"/>" /> 

Cliccando il file CSS tramite view-source in un browser Web, la risposta del server mappe torna alla pagina indice, piuttosto che il risorsa. Mi porta a credere che sia legato alla mappatura servlet.

Qualsiasi aiuto con questo sarebbe fantastico!

Grazie!

Edit: dimenticato di menzionare, se mi legano il controller di dire:

@Controller("/pages") 

Tutto funziona bene, appena avrebbe preferito la root di contesto in grado di rispondere correttamente.

+0

Qual è il tuo ambiente? AFAIK Weblogic, ad esempio, richiede la mappatura mime esplicita di css in web.xml css text/css

+0

Calcolato il problema durante l'aggiornamento del post, strano problema, però. – dardo

+0

ha reinserito il post per mostrare perché – dardo

risposta

7
@Controller("/) 

e

@RequestMapping("/") 

non sono la stessa cosa.

Poiché @RequestMapping può essere posizionato a livello di classe, posizionare la mappatura sulla classe avrà l'effetto desiderato.

Esempio:

@Controller 
@RequestMapping("/") 
public class RootController 
{ 

    @RequestMapping(method=RequestMethod.GET) 
    public String index() 
    { 
    return "index"; 
    } 

} 

Ciò funzionerà correttamente e funziona anche con MVC: fagiolo risorse.

+0

Sfortunatamente quanto sopra non funziona per me (Spring 4.3.1). Altre idee? –

+0

Dovrebbe funzionare, suppongo che il controller non venga prelevato a causa della scansione dei componenti che cerca nei pacchetti sbagliati o che non ha affatto la scansione dei componenti. @Controller è solo metadati utilizzati da Spring per indicare alla scansione dei componenti che è disponibile per il cablaggio come bean. Se non si utilizza la scansione dei componenti, è necessario cablare il bean manualmente. – dardo

0

mettere questa linea in MVC-dispatcher-servlet.xml

<bean name="/" 
     class="com.springapp.mvc.HelloController" /> 

che funzionerà.

mappatura in web.xml

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
Problemi correlati