ซึ่งจะดีกว่าให้ส่งคืน“ ModelAndView” หรือ“ String” บนตัวควบคุม spring3


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

ไม่มีทางดีขึ้น ทั้งสองอย่างถูกต้องสมบูรณ์ คุณจะเลือกใช้อันไหนขึ้นอยู่กับว่าอันไหนเหมาะกับแอปพลิเคชันของคุณมากกว่ากัน - Spring ช่วยให้คุณทำแบบนั้นได้

ในอดีตทั้งสองแนวทางมาจาก Spring เวอร์ชันต่างๆกัน ModelAndViewวิธีเป็นวิธีการหลักของการกลับมาทั้งรูปแบบและดูข้อมูลจากตัวควบคุมในก่อนฤดูใบไม้ผลิ 2.0 ตอนนี้คุณสามารถรวมModelพารามิเตอร์และStringค่าที่ส่งคืนได้ แต่วิธีการเดิมยังใช้ได้


8
ดังนั้นวิธีการ String จึงเป็นวิธีใหม่
akshayb

1
@skaffman คุณช่วยอธิบายได้ไหมว่ากระบวนการ Spring มีความแตกต่างกันอย่างไรเช่นการ
เตรียมบริบทล่วงหน้า

โปรดดู ( stackoverflow.com/questions/37410839/… ) ขณะใช้ ModelAndView ฉันพบปัญหานี้
Vishnu KR

15

ฉันต้องการเพิ่มฉัน 2 เซ็นต์ด้วย แนวทางที่สองเป็นแนวทางที่มุ่งเน้นไปที่การประชุมมากขึ้นกล่าวคือผู้พัฒนาจะพูดถึงมุมมองของเขาอย่างชัดเจน แต่โดยนัยว่าสตริงที่ส่งคืนคือชื่อมุมมอง การเข้ารหัสน้อยลงอ่านได้และเป็นมาตรฐาน ดีกว่าวิธีที่เก่ากว่าด้วย ModelAndView

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.