जो बेहतर है, स्प्रिंग 3 नियंत्रक पर "मॉडलएंड व्यू" या "स्ट्रिंग" लौटाएं


115

वापसी का तरीका ModelAndView

@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView list(
    @UserAuth UserAuth user, 
    ModelAndView mav) {

    if (!user.isAuthenticated()) {
        mav.setViewName("redirect:http://www.test.com/login.jsp");
        return mav;
    }

    mav.setViewName("list");
    mav.addObject("articles", listService.getLists());

    return mav;
}

वापसी का तरीका स्ट्रिंग

@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
    @UserAuth UserAuth user, 
    Model model) {

    if (!user.isAuthenticated()) {
        return "redirect:http://www.test.com/login.jsp";
    }

    model.addAttribute("articles", listService.getLists());

    return "list";
}

ये वही काम करते हैं। कौन सा बेहतर तरीका है? और अंतर क्या है?

जवाबों:


129

कोई बेहतर तरीका नहीं है। दोनों पूरी तरह से वैध हैं। जो आप उपयोग करने के लिए चुनते हैं वह निर्भर करता है कि कौन सा आपके आवेदन को बेहतर ढंग से सूट करता है - स्प्रिंग आपको इसे किसी भी तरह से करने की अनुमति देता है।

ऐतिहासिक रूप से, दो दृष्टिकोण वसंत के विभिन्न संस्करणों से आते हैं। यह ModelAndViewदृष्टिकोण प्री-स्प्रिंग 2.0 में एक नियंत्रक से मॉडल और दृश्य जानकारी दोनों को वापस करने का प्राथमिक तरीका था। अब आप Modelपैरामीटर और Stringरिटर्न वैल्यू को मिला सकते हैं , लेकिन पुराना तरीका अभी भी मान्य है।


8
इसलिए स्ट्रिंग दृष्टिकोण नया है।
अक्षय

1
@skaffman आप व्याख्या कर सकते हैं, अगर वहाँ ऐसा prepending contextpath आदि .. जिस तरह से वसंत प्रक्रिया में कोई अंतर नहीं है
Keerthivasan

कृपया देखें ( stackoverflow.com/questions/37410839/… )। ModelAndView का उपयोग करते समय मुझे यह समस्या मिली
विष्णु केआर

15

मैं मुझे 2 सेंट भी जोड़ना चाहूंगा। दूसरा दृष्टिकोण कन्वेंशन ओरिएंटेड की ओर अधिक है अर्थात डेवलपर स्पष्ट रूप से उल्लेख करता है कि उसका दृष्टिकोण क्या है लेकिन इसका निहितार्थ यह है कि रिटर्न स्ट्रिंग दृश्य नाम है। इतना कम कोडिंग, पठनीय और मानक। ModelAndView के साथ पुराने तरीके से बहुत बेहतर है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.