2

ストラットの選択ボックスにいくつかのオプトグループを動的に入力しようとしています。目的は、選択ボックスコントロールを駆動するマップ内の重複する名前を独自のオプショングループにグループ化することです。

たとえば、私には3つの会社があります。

  • ホームデポ
  • マクドナルド
  • ウォルマート

私のデータベースには、複数の場所があります。

  • ホームデポ
    -38393サムストリート
    -3839エルムストリート
  • マクドナルド
    -38393ストリートアベニュー
    -38333テストストリート
    -393339このストリート
  • ウォルマート
    -3939ストリートアベニュー

オプショングループを使用してドロップダウンにグループ化するだけです(複数のアドレスがある場合のみ、それ以外の場合はドロップダウンに通常どおり表示します)-おそらく私が見つけたこの例に似ています。以下のようなことをしたいのですが、optgroupをオプションにリンクする必要があります。

<s:select id="regionstate" name="state" list="stateMap">  
             <s:iterator value="region" status="regionStatus">  
                 <optgroup label="<s:property value="name" />">  
                         <s:iterator value="states" status="stateStatus">  
                             <option value="<s:property value="id" />"><s:property value="name" /></option>  
                         </s:iterator>  
                 </optgroup>  
     </s:iterator>  

私は実際に上記のコードを実装していませんが、私の問題に関連する例の問題は、地域と州がリンクされているように見えないことだと思います。

私は次のことを行っています:-optgroupのlabel属性を設定する複製(名前)のリスト、および-個々のアイテムの適切な値(ドロップダウン値)と各アイテムのアドレス(ユーザー)

私が達成しようとしていることが可能かどうかはわかりませんが、それはかなり簡単なはずです。ちょっとした方向性が必要で、パズルのほんの一部が欠けていることを願っています。

よろしくお願いします!

それはこのように見えるはずです、私は思います:

  • -選択する
    • optgroup 1
      • オプション
      • オプション
        -optgroup2
      • オプション
      • オプション
      • オプション
        -optgroup3
      • オプション
      • オプション

編集との混乱をお詫び申し上げます。私の理解では、選択ボックス内のoptgroupは、重複した名前(McDonald's、Home Depot、Wal Mart)のリストになります。各optgroup内の各オプションは、その特定の名前に関連付けられます。したがって、たとえば、マクドナルドのoptgroupには、複数のオプションを関連付けることができます。


さて、私は会社のクラスを持っているとしましょう。このクラスには、id、name、addressの3つのプロパティがあります。レンダリングされた選択ボックスがどのように表示されるかを次に示します。

<select name="companies">
    <option value="1a">Company 1</option>
    <option value="2a">Company 2</option>
    <optgroup label="Company 3">
        <option value="3a">38373 Street Ave</option>
        <option value="3b">38393 Town St</option>
    </optgroup>
    <optgroup label="Company 4">
        <option value="4a">990300 Street Ave</option>
        <option value="4b">99093 Town St</option>
        <option value="4c">99093 Town St</option>
    </optgroup>
</select>
  • 一意の各会社(会社1と会社2)のIDと会社名が記載されたマップがあります。これは、s:selectタグのlist属性を介して入力されます。
  • 各optgroupのoptgrouplabel属性を設定するために、複製される各アイテム(company3およびcompany4)の会社名のリストが必要になると思います。私の仮定では、リスト内の各アイテムはマップの1つに対応している必要があります。これには、複数のoptgroupを動的に作成するためのイテレータが必要になります
  • また、複製される各アイテム(会社3と会社4)のIDと会社の住所が記載された別のマップが必要になることも予想されます。これには、各optgroup内に複数のオプションを動的に作成するイテレーターも必要になります。

おそらく、私が伝えるのに苦労しているのは、実際に3ビットのデータを処理する必要があるということです。そのため、マップを使用するだけでうまくいくかどうかはわかりません。私が言ったように、私がこのパズルのピースを見逃しているか、私の想定したデザインに欠陥がある可能性が非常に高いです。

4

1 に答える 1

3

次のコードを試してみてください。

    <s:select id="regionstate" name="state" list="stateMap">  
                 <s:iterator value="region" status="regionStatus">  
                     <optgroup label="%{name}">  
                             <s:iterator value="states" status="stateStatus">  
                                 <option value="%{id}"> %{name}</option>  
                             </s:iterator>  
                     </optgroup>  
               </s:iterator>
    </s:select>
于 2013-02-18T05:17:56.420 に答える