jsp里这样写的:
<ww:select label="省份" list="provinces" name="province" listKey="key" listValue="value"/>
运行jsp后就报:java.lang.RuntimeException: tag select, field list: You must specify a collection/array/map/enumeration/iterator. Example: people or people.{name},而且页面显示不出下拉框,请大家帮忙看一下,感激不尽!
对应的action是:
public class GreetingAction2Version extends ActionSupport {

String greeting;

String province;

List provinces = new ArrayList();

public GreetingAction2Version() {
             provinces.add(new ProvinceCls("key1","value1"));
             provinces.add(new ProvinceCls("key2","value2"));
             provinces.add(new ProvinceCls("key3","value3"));
             provinces.add(new ProvinceCls("key4","value4"));
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public List getProvinces() {
return provinces;
}
public void setProvinces(List provinces) {
this.provinces = provinces;
}
public String getGreeting() {
return greeting;
}

public String execute() throws Exception {
                    ……
} //内部类
public static class ProvinceCls {
         String key;
         String value;
    
     public ProvinceCls(String key, String value) {
     this.key = key;
     this.value = value;
     } public String getKey() {
    return key;
} public String getValue() {
    return value;
}    }

}

解决方案 »

  1.   

    <ww:select label="省份" list="provinces" name="province" listKey="key" listValue="value"/>这里的name="province"是什么?
      

  2.   

    是定义的一个String类型属性:
             String province;

    List provinces = new ArrayList();

    public GreetingAction2Version() {
                 provinces.add(new ProvinceCls("key1","value1"));
                 provinces.add(new ProvinceCls("key2","value2"));
                 provinces.add(new ProvinceCls("key3","value3"));
                 provinces.add(new ProvinceCls("key4","value4"));
    }
      

  3.   

    我看了一下文档,发现你的标签部分没有错误。所以,建议你在显示标签之前,答应provinces,看看它是不是空?
      

  4.   

    小弟测试了一下,不为空啊
    com.signori.webwork.action.GreetingAction2Version$ProvinceCls@ca2dce
    com.signori.webwork.action.GreetingAction2Version$ProvinceCls@18558d2
    com.signori.webwork.action.GreetingAction2Version$ProvinceCls@18a47e0
    com.signori.webwork.action.GreetingAction2Version$ProvinceCls@174cc1f
      

  5.   

    public static void main(String args[]) {
    GreetingAction2Version g = new GreetingAction2Version();
    List list = g.getProvinces();
    Iterator i = list.iterator();
    while (i.hasNext()) {
    ProvinceCls pc = (ProvinceCls)i.next();
    System.out.print(pc.getKey() + " ");
    System.out.println(pc.getValue());
    }
    }输出:
    1 江苏省
    2 浙江省
    3 广东省
    4 海南省
      

  6.   

    小弟还想请教一下,在webwork中大家一般情况下处理下拉框是用什么方法,能否举例,感激不尽?
      

  7.   

    不是让你这么打印
    你应该在<ww:select label="省份" list="provinces" name="province" listKey="key" listValue="value"/>前面打印<%
    List provinces = page.getAttribute("provinces");
    System.out.println(provinces );
    %>
    <ww:select label="省份" list="provinces" name="province" listKey="key" listValue="value"/>
      

  8.   

    zqrqq你好,多谢你的帮助,想问一下,webwork中处理下拉框一般用什么方法
      

  9.   

    我插一句,lz你配置WebWork标签了吗?
      

  10.   

    我用的版本是2.2.2,标签不需要在web.xml里配置,2.1.7需要的,标签肯定没问题的,我试过了
      

  11.   

    你的这种写法必须要在action里面把provinces定义成map类型的值才行
      

  12.   

    Map provices = new hasMap();
    provinces.put(key,value);
    再jsp中用<ww:select label="省份" list="provinces" name="province" listKey="key" listValue="value"/>
      

  13.   

    我知道了,用list也可以的,关键<ww:select label="省份" list="provinces" name="province" listKey="key" listValue="value"/>这个jsp页面第一次运行时是provinces为空,不为空就可以正常显示出来,大家有什么方法让它不为空呢,多谢了
      

  14.   

    我知道了,用list也可以的,关键<ww:select label="省份" list="provinces" name="province" listKey="key" listValue="value"/>这个jsp页面第一次运行时是provinces为空,不为空就可以正常显示出来,大家有什么方法让它不为空呢,多谢了
      

  15.   

    headerKey="" headerValue="请选择"