Action setProperty ตั้งค่าคุณสมบัติของ Bean Bean ต้องถูกกำหนดไว้ก่อนหน้านี้ มี 2 วิธีพื้นฐานในการใช้ Action setProperty -
คุณสามารถใช้ jsp:setProperty หลัง แต่นอกเหนือจากองค์ประกอบ jsp:useBean ดังนี้ -
<jsp:useBean id = "myName" ... /> ... <jsp:setProperty name = "myName" property = "someProperty" .../>
ในกรณีนี้ jsp:setProperty จะทำงานไม่ว่าจะมี Bean ใหม่ถูกสร้างหรือพบ Bean เดิม
บริบทที่สองที่ jsp:setProperty อาจปรากฏคือ ภายใน Body ขององค์ประกอบ jsp:useBean ดังนี้ -
<jsp:useBean id = "myName" ... > ... <jsp:setProperty name = "myName" property = "someProperty" .../> </jsp:useBean>
ที่นี่ jsp:setProperty จะทำงานก็ต่อเมื่อมีออบเจ็กต์ใหม่ถูกสร้าง ไม่ใช่เมื่อพบออบเจ็กต์เดิม
ตารางต่อไปนี้รายการแอตทริบิวต์ที่เกี่ยวข้องกับ Action setProperty -
| ลำดับ | แอตทริบิวต์และคำอธิบาย |
|---|---|
| 1 | name ระบุ Bean ที่คุณสมบัติจะถูกตั้งค่า Bean ต้องถูกกำหนดไว้ก่อนหน้านี้ |
| 2 | property ระบุคุณสมบัติที่ต้องการตั้งค่า ค่า "*" หมายถึงพารามิเตอร์คำขอทั้งหมดที่ชื่อตรงกับชื่อคุณสมบัติ Bean จะถูกส่งไปยัง Setter Methods ที่เหมาะสม |
| 3 | value ค่าที่จะกำหนดให้คุณสมบัติที่กำหนด หากค่าพารามิเตอร์เป็น null หรือพารามิเตอร์ไม่มีอยู่ Action setProperty จะถูกเพิกเฉย |
| 4 | param แอตทริบิวต์ param คือชื่อพารามิเตอร์คำขอที่คุณสมบัติจะรับค่า ไม่สามารถใช้ value และ param พร้อมกันได้ แต่อนุญาตให้ใช้ทั้งคู่ไม่ได้ |
ตัวอย่าง
ลองกำหนด Bean ทดสอบที่จะใช้ในตัวอย่างของเรา -
/* File: TestBean.java */
package action;
public class TestBean {
private String message = "No message specified";
public String getMessage() { return(message); }
public void setMessage(String message) { this.message = message; }
}
คอมไพล์โค้ดข้างต้นเพื่อสร้าง TestBean.class และให้แน่ใจว่าคัดลอก TestBean.class ไปที่ C:\apache-tomcat-7.0.2\webapps\WEB-INF\classes\action และตัวแปร CLASSPATH ควรชี้ไปที่โฟลเดอร์นี้ -
ตอนนี้ใช้โค้ดต่อไปนี้ในไฟล์ main.jsp โค้ดนี้โหลด Bean และตั้งค่า/ดึงพารามิเตอร์ String ง่ายๆ -
<html> <head> <title>Using JavaBeans in JSP</title> </head> <body> <center> <h2>Using JavaBeans in JSP</h2> <jsp:useBean id = "test" class = "action.TestBean" /> <jsp:setProperty name = "test" property = "message" value = "Hello JSP..." /> <p>Got message....</p> <jsp:getProperty name = "test" property = "message" /> </center> </body> </html>
ลองเข้าถึง main.jsp จะแสดงผลลัพธ์ดังนี้ -
Using JavaBeans in JSP
Got message.... Hello JSP...