2016-03-31 5 views
2

私はキーがStringであり、値はStringか別のMapです。これはJavaファイルから返される応答に依存します。異なるタイプのドロップダウンを入れるためのStruts2イテレータ

このレスポンスをStruts2イテレータを使用してドロップダウンで作成する必要があります。

私の要件は、値がStringの場合、<option>タグを使用する必要があります。値がMapの場合は<optgroup>に移動する必要があります。

そのため、そのマップの「値」がまたはMapであるかどうかを確認し、それに対応して入力する必要があります。

+0

user3271472 @あなたの文字列は、任意の形式を持っていません?あなたが含まれているかどうかチェックすることができます。 – goodyzain

答えて

2

それはそうと同じくらい簡単:

<select name="foo"> 

    <s:iterator value="myMapOfMaps" var="currentEntry"> 
     <s:if test="%{#currentEntry.value instanceof java.util.Map}"> 

      <optgroup label="<s:property value='%{#currentEntry.key}'/>"> 
       <s:iterator value="#currentEntry.value" var="innerEntry"> 

        <option value="<s:property value='%{#innerEntry.key}'/>"> 
         <s:property value='%{#innerEntry.value}' /> 
        </option> 

       </s:iterator> 
      </optgroup> 

     </s:if> 
     <s:else> 

      <option value="<s:property value='%{#currentEntry.key}'/>"> 
       <s:property value='%{#currentEntry.value}' /> 
      </option> 

     </s:else> 
    </s:iterator> 

</select> 
関連する問題