2

我正在尝试为我在 struts 中的选择框动态填充一些 optgroup。目的是将映射中驱动选择框控件的任何重复名称分组到它们自己的选项组中。

例如,我有 3 家公司:

  • 家得宝
  • 麦当劳
  • 沃尔玛

在我的数据库中,我有多个位置:

  • 家得宝
    -38393 Some Street
    -3839 Elm Street
  • 麦当劳
    -38393 Street Ave
    -38333 Test Street
    -393339 This Street
  • 沃尔玛
    -3939 Street Ave

我只是希望它们使用选项组在我的下拉列表中分组(仅当有多个地址时,否则我希望它们在下拉列表中正常显示) - 可能类似于我发现的这个示例。我想做一些类似于下面的事情,但是 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 的标签属性,以及 - 包含每个单独项目的适当值(下拉值)和每个项目的地址(显示到用户)

我不确定我想要实现的目标是否可能,但它似乎应该非常简单。我希望我只需要一个小方向,而我只是缺少一小块拼图。

提前感谢您的所有帮助!

它应该看起来像这样,我认为:

  • -选择
    • 选择组 1
      • 选项
      • 选项
        -optgroup 2
      • 选项
      • 选项
      • 选项
        -optgroup 3
      • 选项
      • 选项

很抱歉对编辑造成的所有混淆。据我了解,选择框中的 optgroup 将是重复名称的列表(麦当劳、家得宝、沃尔玛)。每个 optgroup 中的每个选项都将与该特定名称相关联。例如,麦当劳的 optgroup 可能有多个与之关联的选项。


好的,假设我有一个公司课程。该类有 3 个属性:id、name 和 address。这是我期望渲染的选择框的外观:

<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 属性填充。
  • 我希望我需要一个重复的每个项目(公司 3 和公司 4)的公司名称列表,以便为每个 optgroup 填充 optgroup 标签属性。我的假设是列表中的每个项目都需要对应于其中一张地图。这将需要一个迭代器来动态创建多个 optgroup
  • 我还希望我需要一个不同的地图,其中包含每个重复项目的 ID 和公司地址(公司 3 和公司 4)。这还需要一个迭代器在每个 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 回答