1

タグの listValue 属性は、そのオプションを選択したときにユーザーに表示されるラベルを指定するために使用されます。

例 -

<s:select name="user" list='users' listValue="username" listKey="userId"
label="Select an User" />

OGNL リテラルでリストを列挙するときに同じことを行うことは可能ですか?

<s:select name="distance" cssClass="textBoxStyle" headerValue="Select Distance"
 headerKey="" list="{'1 Km', '2 Km', '3 Km', '5 Km', '8 Km', '12 Km', '20 Km'}" />

1Km をユーザーに表示し、文字列 1Km ではなく整数 1 をフォームと共に送信したいと考えています。

4

2 に答える 2

0

コーディングしたような生の配列を使用する代わりに、このビューの背後にあるアクションからマップを取得することを検討する必要があります。その場合、アクションのマップは次のようになります。

Map<String, Integer> myMap = new HashMap<>();
myMap.put("1 Km", 1);
...

ビュー内のコードは次のようになります。

<s:select name="distance" cssClass="textBoxStyle" headerValue="Select Distance"
    headerKey="" list="myMap" />

マップのキーはラベルとして表示され、値はオプションの本体として表示されます。

于 2012-05-18T13:51:41.033 に答える
0

listKeyおよびlistValue属性を使用して、オブジェクトの実際のリストを作成する必要があります。

技術的には、おそらくいくつかのひねくれたOGNLを実行できます.JavaScriptと非表示フィールドの事前送信を介して実行することもできますが、他の回答が述べているように、ビューレイヤーではなくJavaレイヤーで実行する方がよい.

オブジェクトのリストはよりコミュニケーションがとれ、構築しやすいように見えるという点で、他の回答には同意しませんが、技術的な観点からは、この場合に違いはないため、意見の問題です。

于 2012-05-18T15:55:43.727 に答える