2010-05-22 26 views
14

Vì vậy, theo tài liệu J2EE của Sun (http://docs.sun.com/app/docs/doc/819-3669/bnani?l=en&a=view), "Nếu thuộc tính thẻ không được yêu cầu, trình xử lý thẻ sẽ cung cấp giá trị mặc định".J2EE: Giá trị mặc định cho thuộc tính thẻ tùy chỉnh

Câu hỏi của tôi là làm cách nào để xác định giá trị mặc định theo mô tả của tài liệu. Đây là mã:

<%@ attribute name="visible" required="false" type="java.lang.Boolean" %> 
<c:if test="${visible}"> 
    My Tag Contents Here 
</c:if> 

Rõ ràng, thẻ này sẽ không biên dịch vì thiếu chỉ thị thẻ và nhập thư viện cốt lõi. Quan điểm của tôi là tôi muốn thuộc tính "hiển thị" được mặc định là TRUE. Thuộc tính thẻ "không bắt buộc", do đó trình xử lý thẻ "phải cung cấp giá trị mặc định". Tôi muốn cung cấp một giá trị mặc định, vì vậy tôi đang thiếu gì?

Bất kỳ trợ giúp nào được đánh giá cao.

Trả lời

15

Tôi đoán tôi sẽ trả lời câu hỏi của riêng mình. Tôi đã có một epiphany và nhận ra rằng java.lang.Boolean là một lớp và không phải là một nguyên thủy. Điều này có nghĩa là giá trị có thể là null và sau khi thử nghiệm, giá trị này chắc chắn là null. Khi một giá trị không được định nghĩa, thì null được truyền vào. Nếu không, giá trị là bất cứ thứ gì được truyền vào. Vì vậy, điều đầu tiên tôi làm sau khi khai báo thuộc tính là kiểm tra nếu nó là null. Nếu nó là null, sau đó tôi biết một giá trị đã không được thông qua năm hoặc một ai đó đưa cho tôi null, và nó sẽ được chuyển đổi sang một số giá trị mặc định:

<c:if test="${visible == null}"><c:set var="visible" value="${true}" /></c:if> 
+0

Xem này: http://stackoverflow.com/questions/3136415/default-value-on-jsp-custom-tag-attribute – gavenkoa

+1

Trong trường hợp của tôi nó không hoạt động . Thuộc tính boolean của tôi không bao giờ rỗng: không thiết lập nó phải gọi hàm tạo mới Boolean (null) 'vì vậy tôi luôn nhận được một giá trị' false' không null. – Rafa

5

Với JSP EL và nhà điều hành có điều kiện đó là một chút bụi nhỏ và thậm chí ngắn hơn:

<c:set var="visible" value="${(empty visible) ? true : visible}" /> 

Trân

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