2010-06-01 45 views
11

Tôi đang cố gắng tạo một tập hợp các thẻ tùy chỉnh đóng gói các phần tử biểu mẫu (đánh dấu và xác thực).Truy cập đối tượng Yêu cầu từ các thẻ JSP tùy chỉnh

Có một phương pháp được lấy ra đối tượng "Out" một cách dễ dàng:

JspWriter out = getJspContext().getOut(); 

Tuy nhiên tôi không thể tìm ra cách để có được những đối tượng yêu cầu. Tôi muốn có thể truy cập trực tiếp các giá trị biểu mẫu đã gửi từ bên trong lớp Thẻ để tôi có thể xác thực từng trường.

documentation khá thưa thớt, vì vậy tôi nghĩ có lẽ tôi có thể sử dụng đối tượng JspContext bằng cách nào đó nhận được thuộc tính yêu cầu. Nhưng tôi không hiểu các phạm vi khác nhau.

System.out.println(getJspContext().findAttribute("field1")); 

luôn in "null".

Enumeration e = getJspContext().getAttributeNamesInScope(1); 

Looping qua và in ra các liệt kê chỉ mang lại cho tôi một danh sách các lớp không tồn tại:

javax.servlet.jsp.jspOut 
javax.servlet.jsp.jspPage 
javax.servlet.jsp.jspSession 
javax.servlet.jsp.jspApplication 
javax.servlet.jsp.jspPageContext 
javax.servlet.jsp.jspConfig 
javax.servlet.jsp.jspResponse 
javax.servlet.jsp.jspRequest 

Vậy là này thậm chí có thể?

Nếu không, bất kỳ ai cũng có thể chỉ cho tôi thư viện thẻ liên quan đến hiển thị và xác thực biểu mẫu không? Tôi đã tìm kiếm trên internet trong một vài giờ và dường như mọi người đều bị ngưng và tôi không thể tải xuống. Hoặc là hoặc đề xuất một lựa chọn tốt hơn để xử lý các biểu mẫu.

Chỉnh sửa: Thẻ mở rộng lớp SimpleTagSupport.

+0

Bạn đang mở rộng lớp học nào với lớp thẻ? – Fil

+0

SimpleTagSupport –

Trả lời

13

Nếu lớp của bạn đang mở rộng TagSupport, bạn có thể truy cập biến pageContext được bảo vệ. Từ đó bạn có thể truy xuất đối tượng yêu cầu.

http://java.sun.com/webservices/docs/1.5/api/javax/servlet/jsp/tagext/TagSupport.html#pageContext

+1

Có cách nào để làm điều đó từ một lớp mở rộng SimpleTagSupport không? –

+2

Nếu bạn cần quyền truy cập vào nhiều thuộc tính của thẻ, bạn nên xem xét mở rộng TagSupport. Có lý do nào bạn tránh điều này không? "JspContext đóng vai trò là lớp cơ sở cho lớp PageContext và tóm tắt tất cả thông tin không dành riêng cho servlet. Điều này cho phép mở rộng thẻ đơn giản bên ngoài ngữ cảnh của Servlet yêu cầu/phản hồi". Từ Sun: http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/jsp/JspContext.html – Fil

+2

Hoặc, bạn có thể truyền JspContext của mình sang một PageContext. Được mô tả ở đây, http://stackoverflow.com/questions/2098796/how-to-access-request-in-jsptags. – Fil

Các vấn đề liên quan