2012-10-10 53 views
5

En mi web.xml que tiene la siguiente asignacióncorrelación de servlet con muelle

<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> 

Actualmente se gestiona las direcciones URL con una extensión de archivo .html fina. Sin embargo, quiero ser capaz de manejar las URL del tipo http: // localhost: 8080/MySite-Web/articles/testMe, es decir, cualquier ruta sin una extensión de archivo con el prefijo de los artículos.

El mapeo de primavera que he probado es.

@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; 
} 

en mi configuración de Spring estoy usando el siguiente

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

edición:

es el mapeo Dispatcher 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> 

aquí está el MySite-web.context.xml Aquí

<?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> 

Parece que toda la información de la ruta es despojado en el momento en que llegue RequestMapping si solo mapa para prueba/

@RequestMapping(value = "/test") 

funciona bien y si

I System.out.println (request.getPathInfo()); Acabo de obtener /prueba sin /artículos ???

Saludos con anticipación.

+0

has probado @RequestMapping (value = "/ articles")? –

+0

¿Cómo se ve la configuración de DispatcherServlet? –

+0

ya que no tiene el controlador completo que no puedo ver, pero asegúrese de no haber especificado también un RequestMapping en la clase del controlador. – DavidA

Respuesta

7

Agregar a su 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>     

No se olvide de añadir las líneas mvc de espacio de nombres propios en la parte superior:

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

Y las direcciones URL en xsi:schemaLocation.

Ahora debería tener en cuenta la ruta completa para resolver asignaciones.

Compruebe el Spring Documentation para obtener más información.

+0

Gracias por la respuesta. Estoy usando la primavera 2.5 – jaseFace

+0

La solución no debería estar lejos de esto.Mire en [[AnnotationMethodHandlerAdapter # setAlwaysUseFullPath() '] (http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.html#setAlwaysUseFullPath (booleano)). Lo siento, estoy ocupado en este momento, si no encuentras una solución, la probaré más tarde en el día con Spring 2.5. – betomontejo

+0

punto encendido. Gracias – jaseFace

Cuestiones relacionadas