5 Stimmen

Die URL-Anforderungszuordnung des Spring Controllers funktioniert nicht wie erwartet

Ich habe eine Zuordnung in web.xml etwa so erstellt:

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

In meinem Controller habe ich etwas in der Art:

import org.springframework.stereotype.Controller;  
@Controller  
public class MyController{  
    @RequestMapping(value="/about/us", method=RequestMethod.GET)
    public ModelAndView myMethod1(ModelMap model){  
        //some code  
        return new ModelAndView("aboutus1.jsp",model);  
    }  
    @RequestMapping(value="/about", method=RequestMethod.GET)
    public ModelAndView myMethod2(ModelMap model){  
        //some code  
        return new ModelAndView("aboutus2.jsp",model);  
    }  
}

Und mein Dispatcher-servlet.xml hat Ansicht Auflöser wie:

<mvc:annotation-driven/>  
<bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:viewClass="org.springframework.web.servlet.view.JstlView"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp"/>

Zu meiner Überraschung: Anfrage .../about/us nicht bis zu myMethod1 im Controller reicht. Der Browser zeigt einen 404-Fehler an. Ich habe einen Logger in die Methode eingefügt, aber er gibt nichts aus, d. h., er wird nicht ausgeführt.
.../about funktioniert einwandfrei! Was kann getan werden, um die .../about/us Arbeit anfordern? Irgendwelche Vorschläge?

12voto

Ravi Khakhkhar Punkte 1854

Sie müssen Folgendes verwenden @RequestMapping(value="/us", method=RequestMethod.GET) oder Sie müssen beantragen about/about/us

2voto

ravi ranjan Punkte 5468

Da Sie "/about" in Ihrer web.xml gemappt haben, wird die URL wie folgt lauten www.xyz.com/about/*

Wie Ihre Konfiguration sagt, funktioniert es für

  1. www.xyz.com/about/about/us
  2. www.xyz.com/about/about

Um richtig zu funktionieren, verwenden Sie entweder /* in web.xml anstelle von /about

oder ändern Sie den Endpunkt des Controllers in

@RequestMapping(value="/us", method=RequestMethod.GET)

@RequestMapping(value="/", method=RequestMethod.GET)

-3voto

Atharva Punkte 6097

Okay ich habe das Ding funktioniert, hier sind Dinge, die ich in der Dispatcher-servlet.xml hinzugefügt:

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

    <bean
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="alwaysUseFullPath" value="true" />
</bean>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X