1

jsp に次のコードがあります。

<% pageContext.setAttribute("warnings",Globals.WARNING_MESSAGES); %>
<c:choose>
    <c:when test="${requestScope[pageScope.warnings] or sessionScope[pageScope.warnings]}">
        <html:errors header="warnings.header" footer="warnings.footer" prefix="warnings.prefix" suffix="warnings.suffix"/>
        <c:remove var="${pageScope.warnings}" scope="session"/>
    </c:when>
    <c:otherwise>
        <html:errors/>
    </c:otherwise>
</c:choose>

属性が EL コーディングで使用できるかどうかを知る方法は (ソース コードを掘り下げずに) とにかくあるのではないかと思います。

このコードでは、pageScope コンテナに設定した定数としてスクリプト変数定義を使用したいと考えています。スクリプト変数を参照する sessionScope から変数を削除するときに同じメカニズムを使用したいと思いますが、<c:remove var>属性がスクリプト変数の解釈を拒否しているようで、定数宣言を参照するためのすべての努力が台無しになります。これを回避するためにjspスクリプトレットを使用できますが、これを行う「より良い」方法はありますか?

4

1 に答える 1

1

あなたの質問を理解しているかどうかはわかりませんが、属性が存在するかどうかをテストするために EL の「空の」演算子を探していると思います。

<c:if test="${empty pageScope.warnings}">
//何かをする
</c:if>

これは、pageScope.warnings が定義されていない (null) 場合に true を返します。

于 2008-10-04T05:51:27.307 に答える