2011-11-21 17 views
0

私はデータベースに変数マップを返しています。これはWebページの詳細を表示したい、フロントエンドはstruts2です。 私は明らかに、これは私はアイデアがStruts2のMapキー値へのアクセス

Name: [ ] 
Random: [ ] 
Something: [ ] 
を次のように表示することで、この

ようなコードを持つことができますので、私は簡単にキー名を取得することができますどのように、うまくいきませんでした。この

<html:iterator value="fields" id="field"> 
    <html:textfield name="#field.value" key="#field.value" label="#field.key"/> 
</html:iterator> 

を試してみました

をフォーム内のテキストフィールドとして使用すると...

どうすれば簡単に行うことができますか?

+0

はstruts2にありますか? –

+0

はい... struts2 +タイル –

+0

どのようにがstruts2タグのlibで見られなかったかわかりません –

答えて

5

Struts2のタグLIBORでそれを見たことがないよう<html:iterator>でそれを行う方法をよくわからないが、それに出くわしていません。

は、我々はlistmap内部イテレータ

<s:iterator value="listmap" status="stat"> 
        <s:iterator> 
         <tr> 
          <th><s:property value="#stat.index"/></th> 
          <td><s:property value="key"/></td> 
          <td><s:property value="value"/></td> 
         </tr> 
        </s:iterator> 
       </s:iterator> 

マップとを有していると仮定すると、単純な <iteraor>タグ

を使用するコンテキストがスタックにプッシュされた最後の値を使用する敏感です。 status属性は、現在の反復を知りたい場合に便利なIteratorStatusオブジェクトを各反復に提供します。

+0

"キー" id = "フィールド">

+0

それはプロパティで動作しますが、必要なテキストフィールドのタグでは機能しません

+0

フィールドにONGLを追加する -

1

接頭辞「html」はstruts2のtaglibですか?あなたがstructs2のタグライブラリを使用する場合

、の接頭辞Sを使用してみましょう:

この

がキーによって値にアクセスその後、マップのキーを反復処理するようにあなたがそれを行うことができます。

<s:iterator value="#someMap.keys" var="key"> 
    <s:textfield value="#someMap[key]" name="someMap[#key]"/> 
</s:iterator> 
+0

を入力するか、エントリにアクセスします。

+0

試してみましたが、

2

任意の名前の値がアクションに返される場合は、マップベースのフォームタグを使用する必要があります。 collectionsのドキュメントをご覧ください。

<s:form ...> 
    <s:iterator value="fields" var="field"> 
    <s:textfield name="sortingKey['%{#field.key}']" label="%{key}" value="%{value}" /> 
    </s:iterator> 
</s:form> 

アクションのマップにゲッター/セッターを提供します。

さらに、id属性が<s:iterator>の場合、Struts 2.1+を使用している場合は非推奨です。ループ変数にはvar属性を使用して名前を付ける必要があります。