<html>
  <head><title>Simple jsp page</title></head>
  <body>
 <s:form>
      <s:select list="educations" label="最高学历" name="education" listKey="id" listValue="name"/>
  </s:form>
  </body>
</html>
报出异常为:
org.apache.jasper.JasperException: tag 'select', field 'list', name 'education': The requested list key 'educations' could not be resolved as a collection/array/map/enumeration/iterator type.
有没有高手解决一下。

解决方案 »

  1.   

    educations NULL 值的可能性比较大。educations Map、List、Array[] 都可以!
      

  2.   

    educations不是collection/array/map/enumeration/iterator类型。
    <s:select list="educations" label="最高学历" name="education" listKey="id" listValue="name"/>请确定是以下这些类型中的一种collection/array/map/enumeration/iterator
      

  3.   

    java中有很多异常,学会根据错误提示去解决错误。你就是高手了~
      

  4.   

    public class Educations extends ActionSupport {
        private List<Education> educations;
        public Educations()
        {
              educations=new ArrayList<Education>();
            educations.add(new Education(1,"高中生") );
            educations .add(new Education(2,"大学生"));
            educations .add(new Education(3,"硕士生")); 
        }
        public String execute()throws Exception
        {
            return SUCCESS;
        }
        public void setEducations(List<Education> educations) {
            this.educations = educations;
        }
        public List<Education> getEducations() {
            return educations;
        }
     可是 就是不对。 那位高手指点一下!
      

  5.   

    public class Education {
        private int Id;
        private String name;
        public Education()
        {}
        public Education(int Id,String name)
        {
            this.Id=Id;
            this.name=name;
        }
        public void setId(int id) {
            Id = id;
        }
        public int getId() {
            return Id;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
    }
      

  6.   

    listKey="id" listValue="name"private int Id;
    看下是不是这里的问题
      

  7.   

      public Educations()
      {
      educations=new ArrayList<Education>();
      educations.add(new Education(1,"高中生") );
      educations .add(new Education(2,"大学生"));
      educations .add(new Education(3,"硕士生")); 
      }把构造函数中的
    educations=new ArrayList<Education>();
      educations.add(new Education(1,"高中生") );
      educations .add(new Education(2,"大学生"));
      educations .add(new Education(3,"硕士生")); 写到 execute方法中。
      

  8.   

    把select标签先注释掉,然后用<s:debug>看看educations的值有没有传到前台。
      

  9.   

     private List<Education> educations;
    你定义这个List是做什么用的?是从前台接收数据,还是为了创建对象?
    你这代码写的一点逻辑性都没有。在写代码前考虑考虑每个属性你创建了要起什么作用先。盲目动手没什么效果的。再者,你传值的话,通过什么传,用什么接,接到了怎么处理?这些你都考虑下。
      

  10.   


    public void findEduList() throws ENMSException {
    ActionContext ctx = ActionContext.getContext();
    List<Education> list = new ArrayList<Education>();
      list .add(new Education(1,"高中生") );
      list .add(new Education(2,"大学生"));
      list .add(new Education(3,"硕士生"));  
    ctx.put("eduList", list);
    } <s:select list="%{eduList}" name="Id" listKey="Id"
    listValue="name" id="Id"
             headerKey="-1
          headerValue="--请选择--">
    </s:select>
      

  11.   


     ognl%{list="educations" }
    才能取得相应的值
      

  12.   

     <s:select list="educations" label="最高学历" name="education" listKey="id" listValue="name"/>
    改成 <s:select list="%{educations}" label="最高学历" name="education" listKey="id" listValue="name"/>
    试试, 也就是把OGNL中的字符串转换当做OGNL表达式解析,另楼主可仔细参考13楼的,这个应该没问题
      

  13.   

    org.apache.jasper.JasperException: tag 'select', field 'list', name 'operator': The requested list key '#{'编辑','员工','作者'}' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
    <s:select name="operator" list="#{'编辑','员工','作者'}" label="操作人" /> <br>
    为什么会出现上边的出错信息?
    求解