2012-10-05 19 views
6

मैं काम करने की कोशिश कर रहा हूं कि नीचे अपवाद क्यों फेंक दिया गया है।NoHandlerFoundException सेट में 'पैरामीटर मैप' कहां हैं?

मुझे लगता है कि ऐसा इसलिए है क्योंकि एक पोर्टलेट को 'व्यू' मोड में एक्सेस किया गया था, लेकिन किसी कारण से मुझे नहीं पता कि वसंत सर्वलेट कंटेनर अनुरोध करने में असमर्थ था, क्या यह सही है?

नीचे अपवाद सेट में 'पैरामीटर मैप' कहां हैं?

org.springframework.web.portlet.NoHandlerFoundException: नहीं मिलान हैंडलर विधि portlet अनुरोध नहीं मिला: मोड 'दृश्य', चरण 'ACTION_PHASE', नक्शे [खाली]

यहाँ है पैरामीटर नियंत्रक:

@Controller 
@RequestMapping("VIEW") 
public class DetailsController { 
    @RequestMapping("VIEW") 
    public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) { 
     return "allDetails/details"; 
    } 
} 
+0

अपने नियंत्रक कोड दिखा (और शायद jsp का एक हिस्सा) एक बहुत –

+0

@Jerome Dalbert मदद मिलेगी क्या jsp आप करते हैं देखना चाहते हैं, वह "सभी विवरण/विवरण" पर रीडायरेक्ट करता है? –

+0

जेएसपी (या जो कुछ भी) भाग नियंत्रक को कॉल करता है –

उत्तर

6

यहां 3 विचार हैं जिनके साथ मैं आ सकता हूं (जानना कि आपके नियंत्रक को कैसे मदद मिलेगी)। उनमें से एक को आज़माएं, या उनमें से एक मिश्रण, और मुझे बताएं कि यह काम करता है या नहीं।

आइडिया 1: शो विवरण @RequestMapping एनोटेशन के लिए ("VIEW") हटाएं। <portlet:actionURL/>:

... 
public class DetailsController { 

    @RequestMapping 
    public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) { 
     return "allDetails/details"; 
    } 

} 

यदि आपका बुला JSP कुछ इस तरह काम कर सकता है showDetails डिफ़ॉल्ट विधि प्रस्तुत करना होगा।

आइडिया 2: अपनी @RequestMapping विधि एनोटेशन के लिए क्रिया पैरामीटर निर्दिष्ट करें।

<portlet:actionURL ... > 
    <portlet:param name="action" value="viewDetails"> 
</portlet:actionURL> 

आइडिया 3:: कार्रवाई चरण के लिए एक खाली विधि जोड़ें

... 
public class DetailsController { 

    @RequestMapping(params = "action=viewDetails") 
    public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) { 
     ... 
    } 

} 

यदि आपका बुला JSP कुछ इस तरह है काम कर सकता था।

... 
public class DetailsController { 

    @RequestMapping(params = "action=viewDetails") // render phase 
    public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) { 
     ... 
    } 

    ... 
    // Empty method 
    @RequestMapping(params = "action=viewDetails") // action phase 
    public void actionMethod() { 
    } 

} 

यह आपके बुला अगर JSP कुछ इस तरह काम कर सकता है:

<portlet:actionURL ... > 
    <portlet:param name="action" value="viewDetails"> 
</portlet:actionURL> 
+0

मुझे यकीन नहीं है कि नियंत्रक को क्या कॉल कर रहा है। आपके उत्तर के लिए धन्यवाद –

2

चीजों की युगल यहाँ पहली बार जांच करने के लिए:

  1. क्या जेएसपी से नियंत्रक के पास कोई पैरामीटर पारित किया गया है?
  2. खाली पैरा परिदृश्य को संभालने के लिए कोई डिफ़ॉल्ट क्रिया विधि है?

अब अगर पहले सवाल का जवाब हां में है, तो अपने jsp actionURL टैग कुछ की तरह होना चाहिए ...

 <portlet:actionURL var="myAction"> 
      <portlet:param name="paramName" value="paramVal" /> 
     </portlet:actionURL> 
     <form:form action="${myAction}"... 

और नियंत्रक में की तरह उसके संगत ActionMapping ...

 @ActionMapping(params = "paramName=paramVal") 
     public void myAction.... 

और यदि दूसरे प्रश्न का उत्तर नहीं है, तो नियंत्रक में एक डिफ़ॉल्ट क्रिया विधि को परिभाषित करें ...

 @ActionMapping(param="!action") 
     public void defaultAction.... 

आशा है कि इससे मदद मिलती है!