การดึงค่า Null จาก servlet ไปยัง jsp

ฉันมี 2 หน้า jsp โดย jsp แรกจะแสดงรูปภาพพร้อมลิงก์ไปยังหน้า jsp ที่สอง

<a href='/th/display.jsp?src=<c:out value="${photo.source}"/>'>

ในเซิร์ฟเล็ตการแสดงผล ฉันมีโค้ดต่อไปนี้...

String srcLink = (String) req.getParameter("src");
    req.setAttribute("src", srcLink);
    getServletConfig().getServletContext().getRequestDispatcher("/display.jsp").forward(req, resp);
}

ภายใน jsp ตัวที่สองของฉัน (display.jsp) ฉันมีโค้ดต่อไปนี้...

<img src="<%= request.getAttribute("src") %>" />

แต่พอดูในบราวเซอร์ มันขึ้นว่า...

<img src="null" />

มีขั้นตอนไหนที่ฉันทำผิดหรือเปล่า?


person Sky    schedule 04.09.2013    source แหล่งที่มา
comment
ฉันคิดว่าคุณไม่สามารถส่งค่าจากหน้าหนึ่งไปยังอีกหน้าหนึ่งได้โดยการคลิกลิงก์หนึ่งลิงก์ขณะที่คุณกำลังทำ ahref คุณควรใช้แบบฟอร์มสำหรับส่งค่า   -  person SpringLearner    schedule 04.09.2013
comment
เหตุใดคุณจึงใช้ EL ในหน้าหนึ่ง (ดี) และ scriptlet ในอีกหน้าหนึ่ง (ไม่ดี)   -  person sp00m    schedule 04.09.2013


คำตอบ (4)


ไม่จำเป็นต้องตั้งค่าแอตทริบิวต์เป็น request.setAttribute() เนื่องจากคุณกำลังใช้ RequestDispatcher มันส่งต่อคำขอเดียวกันไปยังเซิร์ฟเล็ต/JSP อื่น คุณสามารถใช้ request.getParameter ได้

ใช้ request.getParameter("src")

แทน

request.getAttribute(...)

ดังนั้นโค้ดใน display servlet จะมีลักษณะดังนี้:

    getServletConfig().getServletContext().getRequestDispatcher("/display.jsp").forward(req, resp);

และภายใน display.jsp

<img src="<%= request.getParameter("src") %>" />

อ้างอิง: http://www.jguru.com/faq/view.jsp?EID=206736

person Community    schedule 05.09.2013
comment
ฉันได้ลองแล้วและใช้งานได้ ขอบคุณ. <img src="<c:out value = "${param.src}" />" /> ก็ใช้งานได้เช่นกัน - person Sky; 07.09.2013
comment
ใช่ ‹img src=‹c:out value = ${param.src} /› ก็ควรใช้งานได้แทน req.getParameter() ขออภัยฉันลืมพูดถึงเรื่องนี้ นี่คือที่ที่คุณใช้ JSTL การใช้ JSTL เป็นวิธีที่ดีกว่าเสมอ ฉันไม่ต้องการใช้สคริปต์เล็ตใน JSP ควรหลีกเลี่ยง อย่างไรก็ตาม ที่นี่ฉันพยายามขับเคลื่อนตามแนวคิดมากกว่าโค้ด - person ; 10.09.2013

ฉันเดาว่าคุณโดนข้อผิดพลาดทางไวยากรณ์

<a href='/th/display.jsp?src=${photo.source}'>
person Suresh Atta    schedule 04.09.2013
comment
URL href ของคุณไม่ถูกต้องเนื่องจากคุณมีเครื่องหมายคำพูดคู่และไม่จำเป็นต้องใช้แท็กปิด - person araknoid; 04.09.2013

ฉันได้เปลี่ยนเป็นด้านล่างแล้ว แต่ก็ยังใช้งานไม่ได้...

<a href='/th/display.jsp?src=${photo.source}'>

จริงๆ แล้วไม่มีข้อผิดพลาดแสดงบนหน้า jsp หน้าแรกของฉัน เนื่องจากฉันเห็นลิงก์ทั้งหมดที่แสดงอย่างถูกต้อง

หลังจากพยายามมามาก ฉันได้ลบโค้ดในเซิร์ฟเล็ตการแสดงผลของฉัน และเปลี่ยนโค้ดบน jsp ตัวที่สองเป็น...

<img src="<c:out value = "${param.src}" />" />

ตอนนี้มันทำงานได้ดี ขอบคุณสำหรับข้อเสนอแนะ :)

person Sky    schedule 05.09.2013

คุณสามารถลอง

<a href='/th/display.jsp?src=${photo.source} />

ในหน้า jsp หน้าแรกของคุณ

person Mayur Patel    schedule 04.09.2013
comment
‹a href='/th/display.jsp?src=${photo.source}'/› - person Mayur Patel; 04.09.2013