5

मैं इस तरह web.xml कुछ में एक मानचित्रण बनाया है:स्प्रिंग नियंत्रक URL अनुरोध मानचित्रण काम नहीं कर के रूप में की उम्मीद

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

मेरी नियंत्रक में मैं कुछ इस तरह है:

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

और मेरे

<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"/> 
मेरे आश्चर्य करने के लिए

: अनुरोधडिस्पैचर-servlet.xml दृश्य समाधानकर्ता की तरह है 210 नियंत्रक में myMethod1 तक नहीं पहुंच रहा है। ब्राउज़र 404 त्रुटि दिखाता है। मैंने विधि के अंदर एक लॉगर लगाया लेकिन यह कुछ भी प्रिंट नहीं कर रहा है, जिसका अर्थ है कि इसे निष्पादित नहीं किया जा रहा है।
.../about ठीक काम करता है! .../about/us अनुरोध कार्य करने के लिए क्या किया जा सकता है? कोई सुझाव?

उत्तर

12

आप @RequestMapping(value="/us", method=RequestMethod.GET) उपयोग करने की आवश्यकता है या आप अनुरोध करने के लिए about/about/us

+0

लेकिन मैंने नियंत्रक वर्ग स्तर पर किसी भी चीज को मैप नहीं किया है। क्या मुझे यह करना ज़रूरी है ? मुझे लगता है कि केवल तब मुझे '/ about/us' के बजाय लेखक'/us' की आवश्यकता है और एक नज़र डालें: '/ about' पहले से ही काम कर रहा है! तो क्यों नहीं 'हमारे बारे में/हम'। – Atharva

+3

कारण: आपने वेब.एक्सएमएल में डिस्पैचर सर्वलेट में **/about/** मैप किया है। इसलिए, आपको **/लगभग ** के बाद केवल एक भाग मैप करना होगा। –

+0

क्या **/लगभग ** आपकी विधि में आ रहा है ?? वास्तव में?? यह DispatcherServlet –

-3

ठीक है, मैं काम कर रहा है, यहाँ बातें मैं डिस्पैचर-servlet.xml में जोड़ रहे हैं बात मिल की जरूरत है:

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

यह एक हैक वर्कअराउंड है, जिस तरह से रवि ने सुझाव दिया था। – dardo

2

जब से तुम मैप किया गया है "/" के बारे में अपने web.xml में, यूआरएल इसे पारित होगा इस www.xyz.com/about/*

आपके विन्यास के रूप में कहते हैं कि यह

के लिए काम करेगा तरह होगा 10
  1. www.xyz.com/about/about/us
  2. www.xyz.com/about/about

को ठीक से कार्य या तो web.xml में के बजाय /about /* उपयोग करने के लिए करने के लिए

या

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

करने के लिए नियंत्रक के अंत बिंदु बदल

संबंधित मुद्दे