0

ドロップダウンメニューで特定の項目が選択されているかどうかを確認したい。JSPに次のようなものがあるとします。

<sf:select path="xItem" >
    <sf:option value="val1" />
    <sf:option value="val2" />
</sf:select>

対応するJavaBeanで、次のように確認したいと思います。

if (xItem.equals("val1")) xItem = doSomething();

ただし、「val1」を定数、つまり、として定義しfinal static String mytext="val1"、jspファイルを「」に変更すると、SpringはMyClassのプロパティではない<sf:option value="${MyClass.mytext}" />と文句を言います。mytextこのテキストを定数として定義し、JSPおよび対応するJavaクラスで参照する方法はありますか?

4

2 に答える 2

1

プロパティにゲッターセッターが必要であり、最終的な静的変数にはセッターを使用できないため、許可されません。その場合、最終的な静的変数を削除する必要があります。

于 2012-09-21T13:04:58.573 に答える
1

この${MyClass.mytext}式はBeanとプロパティに適用されます。具体的には、サーバーが現在のコンテキストで保存されているBeanを見つけて、そのBeanで(これは)MyClassと呼ばれるゲッターを呼び出すことを期待していることを意味します。クラスの静的メンバー。getMyTextjspContext.FindAttribute

これが私の頭のてっぺんからのいくつかの回避策です:

  • スクリプトレットを使用し、静的メンバーを参照します(JSP内にスクリプトレットがある場合)。
  • モデル内のキーの下にあるコントローラーの値を保存し、そのキーによってJSPで参照します。
  • クラス名を指定して静的メンバーがそれを呼び出し、ページスコープのキーの下に配置するカスタムタグを定義し、そこから使用できます(この記事の例を参照してください:スクリプトレスJSPページ:定数定数の驚異);
  • 定数の値を返すEL関数を定義します(同じ記事「スクリプトレスJSPページ:定数定数の驚異」の例を参照して、最後までスクロールします)。

個人的には、JSPで定数を頻繁に参照する場合は、EL関数を定義するか、1回限りの使用の場合は、コントローラーのモデルキーの下に設定します。

于 2012-09-30T17:05:29.200 に答える