登陆的action调用dao层的一个登陆方法,方法的返回值是一个ArrayList<Login>类型的变量,这个方法的返回值赋给action里的一个成员变量--ArrayList<Login> userList;
在成功跳转后的页面想要把它迭代出来,但它就是没效果。(dao层的方法有值,赋给action也有值)。
新手刚接触struts2,不明白这是怎么回事,求各位大神指点。我想在“欢迎”[和“修改密码”之间把它迭代输出。/size]
[size=14px]我也试过在“插播公告的地方”输出,但还是不行
以下是登陆的action的代码:
package action;
import model.Login;
import dao.DateBase;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;public class Login_Action extends ActionSupport  implements SessionAware,RequestAware{
private static final long serialVersionUID = 1L;
    private Login login;
    private DateBase db;
    Map<String, Object>sessionMap;
    HttpServletRequest request;
    String gender;
    ArrayList<Login> userList;
    public String execute() throws SQLException, ClassNotFoundException {
     db=new DateBase();
     sessionMap=new HashMap<String, Object>();
    
String id = login.getUserId();
String password=login.getPassWord(); userList= db.login(id, password);
    
     if(userList!=null){
     System.out.println("测试:Login_Action的userList的值:"+userList);
     return SUCCESS;
         }else{
     return ERROR;
     }
    
    
    }     
@Override
public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub

} @Override
public void setRequest(Map<String, Object> arg0) {
// TODO Auto-generated method stub

}


 public Login getLogin() {
return login;
} public void setLogin(Login login) {
this.login = login;
}
public String getGender() {
return gender;
} public void setGender(String gender) {
this.gender = gender;
}
}以下是DAO层的登陆部分的代码:
package dao;import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import model.Login;
import model.UserInfo;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;public class DateBase extends ActionSupport implements SessionAware{

private static final long serialVersionUID = 1L;
private Login login;
private UserInfo userInfo;
    Map<String, Object>sessionMap;
java.sql.Connection conn=null; 
PreparedStatement pstmt=null; 
ResultSet rs=null;
String name=null;     //用来存放rs这个对象查询数据库的uName字段的结果。 
ArrayList<Login> list;


//登陆的方法:

public ArrayList<Login> login(String id,String password) throws SQLException, ClassNotFoundException {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=struts2";
    conn = DriverManager.getConnection(url, "sa","123456");
String sSql = "select * from userInfo where userId =? and userPassWord =?";
//进行输出,直观地判断是否有值为空。
System.out.println("测试:DAO的登陆方法输出:id为"+id+"  "+"密码:"+password);
pstmt= conn.prepareStatement(sSql);
pstmt.setString(1,id);
pstmt.setString(2,password);
rs = pstmt.executeQuery();

                    if(rs.next()){
                     login=new Login();
                    // sessionMap=new HashMap<String, Object>();
                     list=new ArrayList<Login>() ;
                    
                     name= rs.getString("userName");
                       login.setUserName(name);
                       login.setUserId(rs.getString("userId"));
                       login.setPassWord(rs.getString("userPassword"));
                       login.setRole(rs.getString("userRole"));
                       
                       list.add(login);
                      // sessionMap.put("user", login);
                       System.out.println("测试:DAO的list的输出:Object的数量:"+list.size());
       return list;
                    }else{
                    return null;
                    }
}
}

解决方案 »

  1.   


    ActionContext.getContext().put("userList", userList);
    在页面使用${userList}
      

  2.   

    struts2 迭代用标签就行了s:iterator
    具体实例可百度。
      

  3.   

    s:iterator   用了,什么都迭代不出来
      

  4.   

    关注
    sinat_33534419
    sinat_33534419
    本版等级:T1
    #3 得分:0 回复于: 2017-05-11 09:17:59
    s:iterator   用了,什么都迭代不出来
      

  5.   

    你用的是struts2吧?
    那在action生成ArrayList<Login> userList;
    的set和get方法。
      

  6.   

    Struts 2如果执行的操作返回类型为对象在页面中才可以直接用iterator输出