2013-03-13 10 views
9

मैं वसंत MVC में निम्न कर सकते हैंजेनेरिक वसंत MVC नियंत्रक के साथ विरासत

मान लीजिए "/ सूची"

@Controller 
public class GenericController<T>{ 

    @RequestMapping(method = RequestMethod.GET, value = "/list") 
    public @ResponseBody List<T> getMyPage(){ 
     // returns list of T 
    } 

} 

नीचे मेरे दो नियंत्रकों

हैं एक अनुरोध मानचित्रण के साथ इस प्रकार मैं बेस GenericController है
@Controller(value = "/page1") 
public class Page1Controller extends GenericController<Page1>{ 

} 

@Controller(value = "/page2") 
public class Page2Controller extends GenericController<Page2>{ 

} 

अब मैं यूआरएल "/ पेज 1/सूची" और "/ पेज 2/सूची" तक पहुंचने में सक्षम हूं, जहां पहले पेज 1 नियंत्रक पर जाता है और दूसरा पेज2Controller पर जाता है।

+3

AFAIK, एनोटेशन विरासत में नहीं हैं, इसलिए यह स्प्रिंग जेरा लिंक के लिए अपेक्षित –

उत्तर

13

यह संभव नहीं है और पहले ही अस्वीकार कर दिया गया था, SPR-10089 देखें। मुझे लगता है कि यह कुछ हद तक भ्रमित होगा और इसके अलावा, यह बहुत ही असंभव है कि उन पद्धतियों में बिल्कुल अलग मैपिंग के अलावा व्यवहार करते हैं। लेकिन आप के बजाय प्रतिनिधिमंडल का उपयोग कर सकते हैं:

public class BaseController<T> { 
    public List<T> getPageList(){ 
     // returns list of T 
    } 
} 

@Controller(value = "/page1") 
public class Page1Controller extends BaseController<Page1>{ 
    @RequestMapping(method = RequestMethod.GET, value = "/list") 
    public @ResponseBody List<Page1> getMyPage() { 
     return super.getPageList(); 
    }  
} 

@Controller(value = "/page2") 
public class Page2Controller extends BaseController<Page2>{ 
    @RequestMapping(method = RequestMethod.GET, value = "/list") 
    public @ResponseBody List<Page2> getMyPage() { 
     return super.getPageList(); 
    } 
} 
+1

+1 के रूप में काम नहीं कर सकता है। –

+0

यह सुनिश्चित नहीं है कि यह सही है, –

+0

मुझे लगता है कि एसपीआर -10089 इस उदाहरण में फिट नहीं है, जिसे अवधारणात्मक रूप से काम करना चाहिए। एसपीआर -10089 वर्ग स्तर पर @RequestMapping पर यूआरएल मैपिंग "ढेर" नहीं करेगा। एक पूर्ण स्पष्टीकरण के लिए यह http://stackoverflow.com/questions/5268643/spring-mvc-requestmapping- विरासत देखें। –

3

स्प्रिंग फ्रेमवर्क 4.x के साथ कुछ इसी तरह की तलाश में उन लोगों के लिए, वर्ग ओपी द्वारा प्रदान की पदानुक्रम संभव है। एक नमूना आवेदन Github पर उपलब्ध है। यह उपयोगकर्ताओं को जेएसओएन के रूप में किताबों की सूची या पत्रिकाओं की एक सूची देखने की अनुमति देता है।

+0

होगा क्यों आप कहते हैं कि सुपर प्रकार में '@ requestMapping' एनोटेशन नहीं है? सुपर टाइप 'बेसकंट्रोलर' में' सूची 'विधि पर एनोटेशन होता है जो प्रश्न में पहला कोड स्निपेट दिखाता है। क्या आपके पास एक अलग आवश्यकता हो सकती है और उलझन में आ गया है? – manish

+0

मनीष, आप सही हैं, गलत टिप्पणी के लिए खेद है - मैं इसे हटा दूंगा और ऊपर की ओर; ;) संपादित करें: समाधान मेरे लिए ठीक काम करता है, इसलिए आईएमओ यह सही जवाब है। –

+0

@MichaelWyraz, पुष्टि के लिए धन्यवाद। :) – manish

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