我正在尝试为struts中的选择框动态填充一些optgroup。其目的是将映射中驱动选择框控件的任何重复名称分组到各自的选项组中。
例如,我有3家公司:
- 家得宝
- 麦当劳
- 沃尔玛
在我的数据库中,我有多个位置:
- 家得宝
-38393 Some Street
-3839 Elm Street - 麦当劳
-38393 Street Ave
38333 Test Street
-39339 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的label属性,以及-一个地图,包括每个单独项目的适当值(下拉值)和每个项目的地址(显示给用户)
我不确定我试图实现的目标是否可能,但似乎应该非常直接。我希望我只需要一点方向,而我只缺少一小块拼图。
提前感谢您的帮助!
我认为它应该是这样的:
- -选择
- 选择组1
- 选项
- 选项
-optgroup 2 - 选项
- 选项
- 选项
-选项组3 - 选项
- 选项
- 选择组1
很抱歉与编辑混淆。按照我的理解,选择框中的一个optgroup是一个重复名称的列表(麦当劳、家得宝、沃尔玛)。每个optgroup中的每个选项都将绑定到该特定名称。例如,麦当劳的选择组可能有多个与其相关的选项
好吧,假设我有一个公司课程。该类有3个属性:id、名称和地址。以下是我期望渲染的选择框的外观:
<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>
- 我有一个地图,上面有每个公司的id和公司名称,这是唯一的(公司1和公司2)。通过s:select标记的list属性填充
- 我希望我需要每个重复项目(公司3和公司4)的公司名称列表,以便为每个optgroup填充optgroup标签属性。我的假设是,列表中的每个项目都需要对应其中一个地图。这需要迭代器来动态创建多个optgroup
- 我还希望我需要一个不同的映射,其中包含每个重复项目的id和公司地址(公司3和公司4)。这还需要迭代器在每个optgroup中动态创建多个选项
也许我在传达方面遇到了困难,因为实际上有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>