J2EE: значения по умолчанию для атрибутов пользовательских тегов

Итак, согласно документации 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>

Очевидно, что этот тег не будет компилироваться, потому что ему не хватает директивы тега и импорта основной библиотеки. Я хочу сказать, что для свойства "visible" по умолчанию используется значение TRUE. "Атрибут тега не требуется", поэтому "обработчик тега должен предоставлять значение по умолчанию". Я хочу предоставить значение по умолчанию, поэтому что мне не хватает?

Любая помощь очень ценится.

Ответы

Ответ 1

Думаю, я отвечу на свой вопрос. У меня было прозрение и понял, что java.lang.Boolean - это класс, а не примитив. Это означает, что значение может быть нулевым, а после тестирования это значение, безусловно, равно null. Когда значение не определено, тогда передается значение null. В противном случае значение - это все, что было передано. Поэтому первое, что я делаю после объявления атрибута, - проверить, является ли оно нулевым. Если оно равно null, то я знаю, что значение не было передано или кто-то передал мне null, и его нужно преобразовать в значение по умолчанию:

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

Ответ 2

С JSP EL и условным оператором он немного чище и короче:

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

Привет