Struts2可以使用struts迭代器标记迭代到特定索引

时间:2011-10-22 05:56:36

标签: struts2 iterator struts

例如:

<s:iterator value="countries">
  <s:iterator value="cities">
    <s:property value="name"/>, <s:property value="[1].name"/><br>
  </s:iterator>
</s:iterator>

这将显示

Wellington, New Zealand
Auckland, New Zealand
Moscow, Russia
Glasgow, Scotland
Edinburgh, Scotland
Stockholm, Sweden

我想要显示

New Zealand
-----------
Wellington 
Auckland

Russia
------
Moscow

Scotland
--------
Glasgow 
Edinburgh ..

etc ..

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

请看这个例子:

豆:

public class Country {
    private String [] cities;
    private String name;

    public String[] getCities() {
        return cities;
    }

    public void setCities(String[] cities) {
        this.cities = cities;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

行动类:

public class MyAction extends ActionSupport {

    private Country [] countries;

    public String doCountryList() {

        countries = new Country[4];
        String [] cities = new String[] {"Wellington", "Auckland"};
        countries[0] = new Country();
        countries[0].setCities(cities);
        countries[0].setName("New Zealand");

        cities = new String[] {"Moscow"};
        countries[1] = new Country();
        countries[1].setCities(cities);
        countries[1].setName("Russia");

        cities = new String[] {"Glasgow", "Edinburgh"};
        countries[2] = new Country();
        countries[2].setCities(cities);
        countries[2].setName("Scotland");

        cities = new String[] {"Stockholm"};
        countries[3] = new Country();
        countries[3].setCities(cities);
        countries[3].setName("Sweden");

        return SUCCESS;
    }

    public Country[] getCountries() {
        return countries;
    }

    public void setCountries(Country[] countries) {
        this.countries = countries;
    }
}

JSP:

    <s:iterator value="countries" var="country">
          <s:property value="#country.name"/><br/>
          --------------<br/>
          <s:iterator value="#country.cities" var="city">
               <s:property value="city"/><br>
          </s:iterator>
          <br/>
     </s:iterator>

如果您的bean设计属于此类型,则可以实现上述使用方式。

答案 1 :(得分:1)

我和James在一起,这应该是一个数据结构 - 编码看起来很脆弱。如果您的阵列已经存在,您应该只能将事物移动到您真正想要的位置。

你应该使用一个结构,但更喜欢集合而不是数组(伪代码):

class Country {
    String name
    List cities
    Country(name)
    Country(name, ... cities)
    void add(City)
}

添加一些静态导入和实用程序:

Country c = country("Brobdingnag", 
                    city("Laputa"),
                    city("Balnibarbi"),
                    city("Luggnagg"));

JSP成为:

<s:iterator value="countries">
    ${name}<br/>
    --------------<br/>
    <s:iterator value="cities">
        ${name}<br/>
    </s:iterator>
    <br/>
</s:iterator>