14

因此,根据 Sun 的 J2EE 文档 ( http://docs.sun.com/app/docs/doc/819-3669/bnani?l=en&a=view ),“如果不需要标记属性,则标记处理程序应提供默认值。”

我的问题是如何根据文档的描述定义默认值。这是代码:

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

显然,这个标签不会编译,因为它缺少标签指令和核心库导入。我的意思是我希望“可见”属性默认为 TRUE。“标签属性不是必需的”,因此“标签处理程序应提供默认值”。我想提供一个默认值,那么我错过了什么?

任何帮助是极大的赞赏。

4

2 回答 2

16

我会回答我自己的问题。我顿悟了,意识到这java.lang.Boolean是一个阶级而不是原始人。这意味着该值可以为空,并且经过测试,该值肯定是空的。

如果未定义值,则传入 null。否则,该值是传入的任何值。所以在声明属性后我要做的第一件事就是检查它是否为 null。如果它是空值,那么我知道一个值没有传入或者有人传给我空值,它应该被转换为一些默认值:

<c:if test="${visible == null}"><c:set var="visible" value="${true}" /></c:if>
于 2010-05-23T04:21:01.733 回答
5

使用 JSP EL 和条件运算符,它会更简洁一些,甚至更短:

<c:set var="visible" value="${(empty visible) ? true : visible}" />
于 2014-01-15T01:56:43.177 回答