2012-10-10 13 views
5

W moim web.xml Mam następujące mapowanieServlet mapowanie ze sprężyną

<servlet-mapping> 
    <servlet-name>mySite</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>mySite</servlet-name> 
    <url-pattern>/articles/*</url-pattern> 
</servlet-mapping> 

Obecnie obsługuje adresy URL z rozszerzeniem plików .html grzywny. Jednak chcę być w stanie obsłużyć adresy URL typu: http: // localhost: 8080/MySite-Web/articles/testMe, tj. Dowolną ścieżkę bez rozszerzenia pliku poprzedzonego artykułami.

Mapowanie sprężyn, które próbowałem, jest.

@RequestMapping(value = "/articles/*") 
public ModelAndView getArticles(HttpServletResponse response, HttpServletRequest request 
     ) throws java.lang.Exception { 

    System.out.println("Handle any path prefixed with /articles/ "); 
    return null; 
} 

w mojej konfiguracji Wiosny Używam następujących

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
</bean> 

edit:

Oto odwzorowanie Dyspozytor Servlet

<servlet> 
     <description> 
     servlet</description> 
     <servlet-name>MySite</servlet-name> 
     <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>classpath:MySite-web-context.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

oto MySite-web.context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:lang="http://www.springframework.org/schema/lang" 
    xmlns:security="http://www.springframework.org/schema/security" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-2.5.xsd 
     http://www.springframework.org/schema/jee 
     http://www.springframework.org/schema/jee/spring-jee-2.5.xsd 
     http://www.springframework.org/schema/lang 
     http://www.springframework.org/schema/lang/spring-lang-2.5.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security-2.0.1.xsd"> 


    <tx:annotation-driven transaction-manager="transactionManager" /> 

    <bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" /> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
    </bean> 

       <context:component-scan base-package="com.mysite" scoped-proxy="interfaces" /> 



<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
<property name="maxUploadSize"> 
      <value>-1</value> <!-- 10MB limit --> 
     </property> 
</bean> 


</beans> 

Wygląda na to wszystko info ścieżka jest usuwany zanim trafi RequestMapping gdybym map po prostu/test

@RequestMapping(value = "/test") 

to działa dobrze, a jeśli

I System.out.println (request.getPathInfo()); Właśnie dostaję /test bez /articles ???

Wiwaty z góry.

+0

wypróbowałeś @RequestMapping (value = "/ articles")? –

+0

Jak wygląda konfiguracja DispatcherServlet? –

+0

ponieważ nie masz całego kontrolera, którego nie mogę powiedzieć, ale upewnij się, że nie określiłeś również RequestMapping na klasie kontrolera. – DavidA

Odpowiedz

7

dodać go do MySite-web.context.xml:

<mvc:annotation-driven/> 
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> 
    <property name="alwaysUseFullPath" value="true"/> 
</bean>     

Nie zapomnij dodać odpowiednie mvc linie przestrzeni nazw na górze:

xmlns:mvc="http://www.springframework.org/schema/mvc" 

a adresy URL w xsi:schemaLocation.

Należy teraz wziąć pod uwagę pełną ścieżkę do odwzorowywania odwzorowań.

Aby uzyskać więcej informacji, sprawdź numer .

+0

Dzięki za odpowiedź. Używam wiosny 2.5 – jaseFace

+0

Rozwiązanie nie powinno być dalekie od tego.Zajrzyj do ['AnnotationMethodHandlerAdapter # setAlwaysUseFullPath()'] (http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.html#setAlwaysUseFullPath (boolean)). Przykro mi, że jestem teraz zajęty, jeśli nie znajdziesz rozwiązania, przetestuję go później w dniu Wiosny 2.5. – betomontejo

+0

miejsce na. Dzięki – jaseFace

Powiązane problemy