Spring MVC รับค่าพารามิเตอร์ของ GET HTTP Request ในวิธีการควบคุมของฉันได้อย่างไร


87

ในช่วงนี้ฉันกำลังศึกษาตัวอย่างการแสดง Spring MVC (ดาวน์โหลดได้จาก STS dasboard) และฉันมีคำถามง่ายๆเกี่ยวกับRequest Mappingตัวอย่าง:

1) ในhome.jspหน้าของฉันฉันมีลิงค์นี้:

        <li>
            <a id="byParameter" class="textLink" href="<c:url value="/mapping/parameter?foo=bar" />">By path, method, and presence of parameter</a>
        </li>

อย่างที่คุณเห็นในลิงค์นี้ฉันกำลังทำ HTTP GET Request โดยมีพารามิเตอร์ "foo" ที่มีค่า: "bar"

คำขอ HTTP นี้ได้รับการจัดการโดยวิธีการต่อไปนี้ของคลาสคอนโทรลเลอร์ MappingController:

@RequestMapping(value="/mapping/parameter", method=RequestMethod.GET, params="foo")
public @ResponseBody String byParameter() {
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

วิธีนี้จัดการคำขอ HTTP (เฉพาะGETประเภท) ที่มีพารามิเตอร์ชื่อ "foo"

ฉันจะนำค่า ("bar") ของพารามิเตอร์นี้ไปใส่ในตัวแปรภายในโค้ดของ my by Parameter ได้อย่างไร

คำตอบ:


184

ตามที่อธิบายไว้ในเอกสารประกอบโดยใช้@RequestParamคำอธิบายประกอบ:

public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
           + foo;
}

3
ขอบคุณมากสำหรับคำตอบที่ชัดเจนและสำหรับการอ้างอิงเอกสาร
AndreaNobili

3
ในกรณีที่มีจำนวนพารามิเตอร์ 10 ตัวเราต้องทำ 10 ครั้งหรือมีวิธีที่ดีกว่าสำหรับสถานการณ์ thar
นับ

2
@Count: คลิกลิงก์ที่ฉันให้ไว้กับเอกสารจากนั้นเลื่อนขึ้นเล็กน้อยจนถึงย่อหน้า "ประเภทอาร์กิวเมนต์ที่รองรับ" และอ่านส่วนที่เกี่ยวกับ "Command or form objects"
JB Nizet

43

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

HTML

<li>
    <a id="byParameter" 
       class="textLink" href="<c:url value="/mapping/parameter/bar />">By path, method,and
           presence of parameter</a>
</li>

ตัวควบคุม

@RequestMapping(value="/mapping/parameter/{foo}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String foo) {
    //Perform logic with foo
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

เอกสารเทมเพลต Spring URI

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