不明白要发布什么,<logic:iterate id="employee" name="employees">中的name值是指什么呀,这是mastering jakarta struts书中的第十一章的例子。

解决方案 »

  1.   

    是指的一个放在session中的collection的对象的名字
    在你的action中用这句话保存一个collection对象
    session.setAttribute(Constants.USER_ARRAY_KEY, userList);
    userList是一个user的集合
      

  2.   

    The name of the JSP bean containing the collection to be iterated (if property is not specified), or the JSP bean whose property getter returns the collection to be iterated (if property is specified).
      

  3.   

    <logic:iterate id="employee" name="employees">
    对应的语句应该是
        ArrayList userArrayList = new ArrayList();
        String sql="select userName,userID,roleName,users.re from users,role where users.roleID=role.roleID";
    DataStore ds=DBbrige.getDataStore(sql);
            while (ds.next())
            {
                User aUser=new User();
                aUser.setUserName(ds.getString("userName"));
                aUser.setUserID(ds.getInt("userID"));
                aUser.setRoleName(ds.getString("roleName"));
                aUser.setRe(ds.getString("re"));
                userArrayList.add(aUser);
            }
    session.setAttribute("employees", userArrayList );
      

  4.   

    你可能没有写那个Bean类吧!
    这个类如果你找不到的话,就写一个把,最简单的get和set方法,只不过要注意的是这个类必须得序列化。
      

  5.   

    还是不行,这是我的EmployeeListAction.java,请大家看看,为什么找不着empoyees bean.package com.wiley;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionError;
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.ArrayList;public class EmployeeListAction extends Action{
      protected ArrayList getEmployees(){
        Employee employee=null;
        ArrayList employees=new ArrayList();
        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;
        ServletContext context=servlet.getServletContext();
        DataSource dataSource=(DataSource) context.getAttribute(Action.DATA_SOURCE_KEY );
        try{
          conn=dataSource.getConnection();
          stmt=conn.createStatement() ;
          rs=stmt.executeQuery("select * from employees,roles,departments where employees.roleid=roles.roleid and employees.depid=departments.depid");
          while(rs.next() ){
            employee=new Employee();
            employee.setUssername(rs.getString("username"));
            employee.setName(rs.getString("name"));
            employee.setRolename(rs.getString("rolename"));
            employee.setPhone(rs.getString("phone"));
            employee.setEmail(rs.getString("email"));
            employee.setRoleid(new Integer(rs.getInt("roleid")));
            employee.setDepid(new Integer(rs.getInt("depid")));
            employee.setDepartment(rs.getString("depname"));
            employees.add(employee);
            System.err.println("Username:" + employee.getUsername() +" Department:"+ rs.getString("depment") );
          }
        }
        catch(SQLException e){
          System.err.println(e.getMessage() );
        }
        finally{
       if(rs!=null){
         try{
           rs.close() ;
         }
         catch(SQLException sqle){
           System.err.println(sqle.getMessage());
         }
         rs=null;
       }
       if(stmt!=null){
         try{
           stmt.close() ;
         }
         catch(SQLException sqle){
           System.err.println(sqle.getMessage());
         }
         stmt=null;
       }
       if(conn!=null){
          try{
            conn.close() ;
          }
          catch(SQLException sqle){
            System.err.println(sqle.getMessage());
          }
          conn=null;
        }
     }
    return employees;
      }
      public ActionForward execute(ActionMapping mapping,ActionForm form,
                                   HttpServletRequest request,HttpServletResponse response)
          throws IOException,ServletException{
        String target="success";
        ArrayList employees=new ArrayList();
        EmployeesActionMapping employeesMappping=(EmployeesActionMapping)mapping;
        if(employeesMappping.getLoginRequired()){
          HttpSession session=request.getSession();
          if(session.getAttribute("USER")==null){
            target =new String("login");
            ActionErrors errors=new ActionErrors();
            errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("errors.login.required"));
            if(!errors.empty() ){
              saveErrors(request,errors);
            }
          }
        }
        employees=getEmployees();
        HttpSession session=request.getSession();
        session.setAttribute("employees",employees);
        return (mapping.findForward(target));
      }
    }
      

  6.   

    在逻辑标记库中定义了<logic:iterate>标记,它能够根据特定集合中元素的数目对标记体的内容进行重复的检查。集合的类型可以是java.util.Iterator,java.util.Collection
    ,java.util.Map或是一个数组。有三种方法可以定义这个集合:
        使用运行时间表达式来返回一个属性集合的集合
        将集合定义为bean,并且使用name属性指定存储属性的名称。
        使用name属性定义一个bean,并且使用property属性定义一个返回集合的bean属性。
        当前元素的集合会被定义为一个页作用域的bean。属性如下,所有这些属性都能使用运行时表达式。
    collection 如果没有设置name属性,它就指定了要进行重复的集合
    Id 页作用域bean和脚本变量的名称,它保存着集合中当前元素的句柄
    indexed 页作用域JSP bean的名称,它包含着每次重复完成后集合的当前索引
    Length 重复的最大次数
    Name 作为集合的bean的名称,或是一个bean名称,它由property属性定义的属性,是个集合
    Offset 重复开始位置的索引
    property 作为集合的Bean属性的名称
    Scope 如果指定了bean名称,这个属性设置bean的作用域。若没有设置,搜索范围从页到应用程序作用域
    Type 为当前定义的页作用域bean的类型
      

  7.   

    request.setAttribute("employees", userArrayList );
    或者设置Scope