当前位置:编程学习 > JAVA >>

Struts2的页面获取查询list结果

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是放在栈顶了 还是在另一个里了  记不太清楚了呢     --------------------编程问答--------------------
引用 3 楼  的回复:
把#号拿掉  告诉你个最简单的办法 去页面上放个debug标签 一下就知道怎么回事了  一点要清楚你的list是放在栈顶了 还是在另一个里了  记不太清楚了呢


debug过了 和后台的list.toString出来了是同一个  但是页面就是去不出来值  #号去过也试过了  还是不行啊 
--------------------编程问答-------------------- 不是告诉你了么 debug里能看出来你到底放哪里了   要是放栈顶就不用加#号了 给你写个简单的把
在action的方法里把 list放到request里 
ServletActionContext.getRequest().setAttribute("list",list);
页面获取
<s:iterator  value="#request.list">
  <s:property value="username"/>
<s:property value="password"/>
 </s:iterator> --------------------编程问答-------------------- 调试UserMGAction里面的list有值么? --------------------编程问答--------------------
引用 6 楼  的回复:
调试UserMGAction里面的list有值么?


list 的值看的是有值的  前台 <s:debug>出来的list和后台list的toString方法看的是同一个的 --------------------编程问答-------------------- try{
list = userMGManager.list(user.getUsername());
return "list";
}catch(Exception e){
e.printStackTrace();
throw new pageException(e.getMessage());
}
这个list方法是什么意思?? --------------------编程问答-------------------- list里面是查询SQL 然后把查询的结果放到list里面去的 --------------------编程问答--------------------
引用 9 楼  的回复:
list里面是查询SQL 然后把查询的结果放到list里面去的


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也能接受到数据查询出来的值  --------------------编程问答-------------------- 在action的方法里把 list放到request里 
ServletActionContext.getRequest().setAttribute("list",list);
页面获取
<s:iterator value="#request.list">
  <s:property value="username"/>
<s:property value="password"/>
 </s:iterator>  这样还有问题吗? --------------------编程问答--------------------
引用 11 楼  的回复:
在action的方法里把 list放到request里 
ServletActionContext.getRequest().setAttribute("list",list);
页面获取
<s:iterator value="#request.list">
  <s:property value="username"/>
<s:property value="password"/>
……

username一直都可以这样直接取出来的  刚刚加了测试了下  还是去不出来password --------------------编程问答-------------------- 因为username是在提交这个action请求的时候已经封装在user这个对象里面了的   但是因为查询的条件很自由username所以user对象中会有username而不会有id和password这两个属性的 
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,