0

答えが見つかることを願って別の質問を作成しましたが、間違った方向に進んでしまいました。参照用の質問は次のとおりです(これをMultiValued Mapに解析するにはどうすればよいですか? )

プロパティファイルから文字列配列を引き出しています(Apache構成を使用)。配列が入ってきて、次のようになります

name,5486984,189.658.235.215,3.158.68.15,name2,189189,189.658.218.268,3.158.68.13...

ここにJSFの一部があります

<f:selectItems itemValue="#{mainBean.information}" value="#mainBean.information}" />

ここにJavaのスニペットがあります

Private String [] information;
information = config.getStringArray("information"); // This brings in this string from the property file

私はこれを参照してきましたhttp://www.horstmann.com/corejsf/refcard.html

ここにあるもので、投稿したばかりです。その文字列配列のすべての要素を設定します。「名前」だけが表示され、他の 3 つの値が実際の「値」として渡されるようにします。

文字列と文字列配列である Map オブジェクトを作成しようとしましたが、JSF はそれを拒否します。

4

2 に答える 2

2

文字列と文字列配列であるMapオブジェクトを作成しようとしましたが、JSFはそれを拒否します。

Aが機能するMapはずです。具体的な例はselectOneMenuタグwikiページにあります。マップキーがオプションラベルになり、マップ値がオプション値になります。

オプション値は、最終的にはHTML要素のvalue属性内のHTML応答に含まれることに注意してください。<option>

<option value="someValue">

HTMLは実際にはプレーンテキストであるため、最初に変換せずに非標準のJavaオブジェクトをHTMLで表すことはできません。AString[]は非標準であり、コンバーターを明示的に指定しない場合、デフォルトではObject#toString()結果はHTMLでインライン化され、次のString[]ようになります。

<option value="[Ljava.lang.String;@1860045">

このように、オプションが選択されると、まさにその値がサーバー側に送信されます。String[]ただし、値は理解できない文字のシーケンスであるため、 Java / JSF/ELを使用して元の値に戻すことはできません。

List<String>コンバーターを提供する代わりに、名前を含むものだけを渡すこともできます。

<h:selectOneMenu value="#{bean.name}">
    <f:selectItems value="#{bean.names}" />
</h:selectOneMenu>

フォームの送信を処理するときString[]に、送信された名前に基づいて、構成ファイルまたはMapBeanプロパティとして記憶されている名前から直接関連付けを取り戻すことができます。

于 2012-10-16T17:36:14.950 に答える
0

まあ、JSF 2.0 では、私Mapにとっては<f:selectItems>うまくいきます。ここでSelectItem示されているように、オプションごとに JSF を作成することができます。そして、それはうまくいくはずです。

于 2012-10-16T16:25:29.277 に答える