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>
もっとスマートな方法があるのかもしれませんが。。