読者です 読者をやめる 読者になる 読者になる

JSTLでプロパティが存在するかを取得する

ひさびさにJSPを使いました。javascriptでいうところのがundefinedかどうかを調べたいということです。例えばrequestスコープにuserというキーでオブジェクトが格納されている場合に、adminというプロパティが存在しないことがある場合には(あまりこういうことはないと思うのですが)、

<c:if test="${user.admin}">
...
</c:if>
<!-- OR -->
<c:if test="${!empty user.admin}">
...
</c:if>

これだとPropertyNotFoundExceptionが発生します。なので、

<c:catch var="exception">
    <c:set var="dummy" value="${user.admin}"/>
</c:catch>
<c:set var="admin" value="${!empty exception && user.admin}"></c:set>
<c:if test="${admin}">
...
</c:if>

でPropertyNotFoundExceptionが発生するかをチェックしています。
もっとスマートな方法があるのかもしれませんが。。