2011-07-29 24 views
9

Làm cách nào để viết (chỉ mẫu) cho thẻ tùy chỉnh với 2 thuộc tính cho phép tôi xuất đoạn html (bảng html) bằng cách sử dụng logic thẻ jstl, có thể được gọi từ jsp của tôi.Thẻ tùy chỉnh JSTL

Điều này có thể được thực hiện mà không cần viết một lớp java, đó là những gì tôi đã thấy trong tất cả các ví dụ.

Những gì tôi đang cố gắng đạt được là để ngoài logic JSTL lặp lại trong JSP của tôi thành thẻ tùy chỉnh rồi chuyển giá trị động cần thiết cho thẻ vào thời gian chạy bằng cách sử dụng các thuộc tính.

Cảm ơn,

Trả lời

26

Không sử dụng scriptlets! Chúng là một thực hành không tốt và chúng cho phép rò rỉ logic nghiệp vụ vào lớp xem của bạn.

Bạn có thể tạo tệp thẻ bằng JSTL; nó khá đơn giản. This là một nơi tốt để bắt đầu.

Một ví dụ:

mytable.tag:

<%@ attribute name="cell1" required="true" type="java.lang.String" description="Text to use in the first cell." %> 
<%@ attribute name="cell2" required="false" type="java.lang.String" description="Text to use in the second cell." %> 

<table> 
<tr> 
    <td id = "cell1">${cell1}</td> 
    <td id = "cell2">${cell2}</td> 
</tr> 
</table> 

Giả sử rằng thẻ của bạn là trong /WEB-INF/tags, sau đó bạn có thể sử dụng nó như thế này:

<%@ taglib prefix="mystuff" tagdir="/WEB-INF/tags" %> 

<mystuff:mytable cell1="hello" cell2="world" /> 
-3

Thay vì tham gia một cách tiếp cận thẻ, trên bắt đầu JSP của bạn, bạn có thể đặt đầu ra của điều kiện của bạn thành một biến phiên và sau đó sử dụng biến session trong tất cả các biến khác qua scriptlets. Một cái gì đó như dưới đây:

Bắt đầu JSP

<% boolean doStuff = isMyConditionTrue ? true : false; 
    session.setAttribute("doStuff", doStuff); 
%> 

khác JSP

<% if(session.getAttribute("doStuff") != null && (boolean)session.getAttribute("doStuff")) { 
%> 
    //do stuff 
<% } %> 
+1

trong kịch bản của tôi muốn tái sử dụng một đoạn của jstl của tôi – van