2015-04-30 26 views
6

Mam projektu Wiosna (4.1.6.RELEASE) MVC z kontrolera, który jest mapowany do /home, ale moim problemem jest to, że również powoływać się na ścieżkach jak /home.html lub /home.doJak skonfigurować Spring MVC DispatcherServlet, aby uniknąć adresów URL z rozszerzeniami?

Moja konfiguracja to:

web.xml:

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

głównego servlet.xml:

<mvc:annotation-driven /> 
    <mvc:resources mapping="/resources/**" location="/resources/" /> 
    <!-- ... --> 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

HomeController.java:

@Controller 
@RequestMapping({"/", "/home"}) 
public class HomeController { 
    @RequestMapping(method = RequestMethod.GET) 
    public String doGet(Model model) { 
     // ... 
     return "home"; 
    } 
} 

Jak sugerowano w podobnych pytań:

Próbowałem dodanie następujących konfiguracjach:

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
     <property name="useDefaultSuffixPattern" value="false" /> 
    </bean> 

i

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> 
     <property name="useSuffixPatternMatch" value="false" /> 
     <property name="useRegisteredSuffixPatternMatch" value="false" /> 
    </bean> 

ale bez powodzenia.

Po debugowaniu DispatcherServlet widzę, że instancje RequestMappingHandlerMapping i DefaultAnnotationHandlerMapping nie ustawiły powyższych komentowanych właściwości na false.

enter image description here

Wydaje się, że to prosta konfiguracja powinna to zrobić, ale ja czegoś brakuje, że nie mogę się dowiedzieć.

Jak poprawnie skonfigurować DispatcherServlet, aby uniknąć rozszerzeń plików w mapowanych ścieżkach?

Z góry dziękuję.

Odpowiedz

2

Zgodnie z Spring doc konfiguracja powinna być pod mvc:annotation-driven, np.

<mvc:annotation-driven> 
    <mvc:path-matching suffix-pattern="false" /> 
    </mvc:annotation-driven> 

jak wyjaśniono w docs

czy używać przyrostek wzór mecz (".*") podczas dopasowywania wzorców do żądań. Jeśli ta opcja jest włączona, metoda odwzorowana na "/users" pasuje również do "/users.*". Domyślna wartość to true.

+0

Tak, masz rację. To się udało!Jeśli możesz również podać link do dokumentów Byłoby idealnie. –

+0

pewna rzecz, połączyła to wiedzieć –