2013-12-13 61 views
3

我想遍历包含<s:select>列表源名称的字符串列表,但HTML输出并不如预期:这是显示,而不是内容列表的名称。<s:select>动态列表名称

Action代码:

public class DescriptionTabArchiveAction extends ActionSupport { 
    private List<String> vegetables = new ArrayList<String>(); 
    private List<String> devices = new ArrayList<String>(); 

    // contain "vegetables" and "devices". 
    private List<String> selectList = new ArrayList<String>(); 

    @Action("multipleSelect") 
    public String multipleSelect() { 
       vegetables.add("tomato"); 
       vegetables.add("potato"); 

       devices.add("mouse"); 
       devices.add("keyboard"); 

       selectList.add("vegetables"); 
       selectList.add("devices"); 

     return SUCCES; 
    } 

     // getters and setters 
} 

JSP:

<s:iterator value="selectList" var="listName"> 

    <s:select list="%{#listName}" /> 

    <!-- I tried with this line too : same behaviour. --> 
    <%-- <s:select list="#listName" /> --%> 
</s:iterator> 

我得到(HTML输出中):

<select name="" id=""> 
    <option value="vegetables">vegetables</option> 
</select> 
<select name="" id=""> 
    <option value="devices">devices</option> 
</select> 

我期待什么(HTML输出):

<select name="" id=""> 
    <option value="tomato">tomato</option> 
    <option value="potato">potato</option> 
</select> 
<select name="" id=""> 
    <option value="mouse">mouse</option> 
    <option value="keyboard">keyboard</option> 
</select> 

我的问题:

我怎么能动态地遍历字符串列表有多个<s:select>不同列表源?

+0

尝试填写选择的属性的其余部分。 [选择标记文档](http://struts.apache.org/release/2.0.x/docs/select.html) – Dan

+0

@Dan:我通过删除无用标记来简化问题,以关注问题。 – airdump

回答

5

使用的Map代替List

private Map<String, List<String>> selectMap = new HashMap<>(); 
//getter and setter here 

@Action("multipleSelect") 
public String multipleSelect() { 
    vegetables.add("tomato"); 
    vegetables.add("potato"); 

    devices.add("mouse"); 
    devices.add("keyboard"); 

    selectMap.put("vegetables", vegetables); 
    selectMap.put("devices", devices); 

    return SUCCESS; 
} 

修改迭代器使用地图

<s:iterator value="selectMap">  
    <s:select list="%{value}" /> 
    ... 
</s:iterator> 
+0

thx!有用。 – airdump