0

ネストされたタグを使用する従来の Struts 1 アプリケーションがあります。ネストされたタグに動的パラメーターを挿入できますか? 例えば、

<nested:select disabled="<c:out value='${requestScope.disableSelectBox}' />" />

私もやってみました:

<nested:select disabled="${requestScope.disableSelectBox}" />

上記の両方の例では、disabled 属性が適切に設定されておらず、無視されていました。ac:out で値を出力すると、disableSelectBox の正しい値が表示されます。

<c:out value="${requestScope.disableSelectBox}" />

同僚は、私が使用する必要があることを提案しました:

<nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" />

問題は、JSP ページで Java スクリプトレットを使用することは悪い習慣と見なされていることです。Struts 1 のネストされたタグに動的変数を埋め込む方法はありますか? Struts 2 への切り替えはオプションではありません。

ありがとう!

4

1 に答える 1

1

Struts 1(私が覚えている限り)では、次のことができません。

<nested:select disabled="<c:out value='${requestScope.disableSelectBox}' />" />

属性宣言内の JSP タグを処理できないため、必要nested:select disabledな属性を確認してください。

しかし、Struts は EL および JSP Scriplets をサポートしています (したがって、あなたの同僚は正しいです)。JSP スクリプトレットは の値を「レンダリング」し、<%=request.getAttribute("disableSelectBox"); %>それを<nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" />

したがって (値が true または false を返すと仮定すると、

<nested:select disabled="${requestScope.disableSelectBox}" />

<nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" />

としてレンダリングされます (結果が true を返す場合)

<nested:select disabled="true" />

ネストされたタグをレンダリングするために Struts に送信される前に (「レンダリング」という言葉を使用して申し訳ありませんが、必要に応じて翻訳を使用できます)。

于 2010-09-29T20:49:28.360 に答える