S2SH框架下的页面始终获取不到list对象中的属性。JSP页面
<div><a href="${pageContext.request.contextPath}/form/userAction_toAdd.action">添加</a></div>
<div>
<s:if test="(list!=null)&&(!list.isEmpty())">
 <div>用户列表</div>
 <!-- 遍历用户 -->
 <s:iterator var="a" value="#list">
  <s:property  value="#a.username"/>
<s:property  value="#a.password"/>
 </s:iterator>
 </s:if>
 <s:else>
     <div>无用户</div>
 </s:else>
 </div>
Struts.xml
<package name="guoyuyuAction" extends="struts-default" namespace="/">
<interceptors>
<!--定义一个拦截器-->
<interceptor class="com.guoyuyu.interceptor.UserInterceptor" name="user" />
</interceptors>
                <action name="query" class="com.guoyuyu.action.UserMGAction" method="query">
<result name="list">/page/main/userManageList.jsp</result>
<exception-mapping result="list" exception="exception.pageException"></exception-mapping>
</action>

</package>action文件:
package com.guoyuyu.action;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.springframework.web.HttpRequestHandler;import net.sourceforge.jtds.jdbc.RequestStream;import com.guoyuyu.exception.pageException;
import com.guoyuyu.manage.userMGManager;
import com.guoyuyu.util.StudentUtil;
import com.guoyuyu.vo.StudentUser;
import com.opensymphony.xwork2.ModelDriven;public class UserMGAction  implements ModelDriven<StudentUser>{

private List<StudentUser> list ;
public List<StudentUser> getList() {
return list;
}
public void setList(List<StudentUser> list) {
this.list = list;
}
StudentUser user = new StudentUser();
userMGManager userMGManager = new userMGManager();

public StudentUser getModel() {
return user;
}


public String query() throws Exception{

if(!StudentUtil.stringNull(user.getUsername())){
throw new pageException("学号不能为空");
}
if(!(user.getUsername().length()==11 && StudentUtil.isNum(user.getUsername()))){
throw new pageException("学号只能为11位数字");
}
try{
list = userMGManager.list(user.getUsername());
return "list";
}catch(Exception e){
e.printStackTrace();
throw new pageException(e.getMessage());
}
}
}

解决方案 »

  1.   

    把#号拿掉  告诉你个最简单的办法 去页面上放个debug标签 一下就知道怎么回事了  一点要清楚你的list是放在栈顶了 还是在另一个里了  记不太清楚了呢    
      

  2.   


    debug过了 和后台的list.toString出来了是同一个  但是页面就是去不出来值  #号去过也试过了  还是不行啊 
      

  3.   

    不是告诉你了么 debug里能看出来你到底放哪里了   要是放栈顶就不用加#号了 给你写个简单的把
    在action的方法里把 list放到request里 
    ServletActionContext.getRequest().setAttribute("list",list);
    页面获取
    <s:iterator  value="#request.list">
      <s:property value="username"/>
    <s:property value="password"/>
     </s:iterator>
      

  4.   

    调试UserMGAction里面的list有值么?
      

  5.   


    list 的值看的是有值的  前台 <s:debug>出来的list和后台list的toString方法看的是同一个的
      

  6.   

    try{
    list = userMGManager.list(user.getUsername());
    return "list";
    }catch(Exception e){
    e.printStackTrace();
    throw new pageException(e.getMessage());
    }
    这个list方法是什么意思??
      

  7.   

    list里面是查询SQL 然后把查询的结果放到list里面去的
      

  8.   


    list源码:public List<StudentUser> list(String username) throws pageException {
    String sql = "SELECT * FROM STUDENT_USER S WHERE S.USERNAME='" + username +"'";
    Session session = cu.getSession();
    List<StudentUser> list = new ArrayList();
    try {
    list = session.createSQLQuery(sql).list();
    return list;
    } catch (Exception e) {
    e.printStackTrace();
    throw new pageException("数据库执行错误,请联系管理员!");
    } finally {
    session.close();
    }
    }list也能接受到数据查询出来的值 
      

  9.   

    在action的方法里把 list放到request里 
    ServletActionContext.getRequest().setAttribute("list",list);
    页面获取
    <s:iterator value="#request.list">
      <s:property value="username"/>
    <s:property value="password"/>
     </s:iterator>  这样还有问题吗?
      

  10.   

    username一直都可以这样直接取出来的  刚刚加了测试了下  还是去不出来password
      

  11.   

    因为username是在提交这个action请求的时候已经封装在user这个对象里面了的   但是因为查询的条件很自由username所以user对象中会有username而不会有id和password这两个属性的