2012-01-20 15 views
0

アクションクラスからJSPにマップを渡しています。次のようにマップが定義される:Struts 2 - キーの条件付きチェックでマップを反復する構文

Map<String, BigDecimal[]> 

Iキーが行のタイトルになり、BigDecimalのアレイはキーの列の値になりJSPにこのマップをiterrateする必要があります。

「Total」という名前のキーがあり、その値は他の値の合計です。例えば

Map = { 
Key1 = {1,2,3} 
Key2 = {4,3,1} 
Key3 = {2,4,5} 
Total = {7,9,9} 
} 

Iは、異なる色またはスタイルで行の全キーの値を示さなければなりません。したがって、次のような条件を設定する必要があります。

<s:if test="check if the key is Total"> 
    Show in a colour1 
</s:if> 
<s:else> 
    Show in colour2 
</s:else> 

マップのキー値に条件を設定する方法についてはわかりません。 IteratorのStatus属性で何か試すことができますか?

お知らせください。

よろしく Saroj

+0

私は問題をソールしています次のように。 Mapの代わりにActionからLinkedHashMapを渡し、最後にTotalキーを保持しました。 次のコードを使用して、イテレータの最後の要素を確認します。 \t \t \t \t \t \t \t \t \t \t Colour1 有するディスプレイ\t \t \tColour2 \tと\t \t \t \t表示あなたの助けと時間のためのすべてのありがとう\t \t \t \t \t \t 。 乾杯 -Saroj – user1061771

答えて

-2

この例を参照してください:

ActionClass:

public class AccountsAction extends ActionSupport { 

    Map<String, BigDecimal[]> valuesMap; 

    public Map<String, BigDecimal[]> getValuesMap() { 
     return valuesMap; 
    } 

    public void setValuesMap(Map<String, BigDecimal[]> valuesMap) { 
     this.valuesMap = valuesMap; 
    } 

    public String execute() { 
     valuesMap = new HashMap<String, BigDecimal[]>(); 

     BigDecimal[] bdArray = {new BigDecimal(1),new BigDecimal(2), new BigDecimal(3)}; 
     valuesMap.put("Key1", bdArray); 

     bdArray = new BigDecimal [] {new BigDecimal(4), new BigDecimal(5), new BigDecimal(6)}; 
     valuesMap.put("Key2", bdArray); 

     bdArray = new BigDecimal [] {new BigDecimal(7),new BigDecimal(8), new BigDecimal(9)}; 
     valuesMap.put("Key3", bdArray); 

     bdArray = new BigDecimal [] {new BigDecimal(10),new BigDecimal(11), new BigDecimal(12)}; 
     valuesMap.put("Total", bdArray); 

     return SUCCESS; 
    } 
} 

successマップJSPおよびJSPソースにある:

 <table> 
      <s:iterator value="valuesMap" status="stat"> 
       <tr <s:if test="key == 'Total'">style="color: red;"</s:if>> 
        <s:iterator> 
         <td><s:property value="key"/></td> 
         <td><s:iterator value="value" status="stat1"><s:property/><s:if test="!#stat1.last">,</s:if></s:iterator></td> 
        </s:iterator> 
       </tr> 
      </s:iterator> 
     </table> 
+0

uは、これは私がif文が –

+0

@JamesJithinを動作しませんと信じて最初の外観をcode.fromテストしている:私はコメントはOPではなく、他のいくつかのSOのユーザー:) –

+0

ではないと信じて@ UmeshAwasthi、私に知らせてくれてありがとう。 :)これは動作するかどうか私に教えてください? –

関連する問題