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());
}
}
}
--------------------编程问答-------------------- 楼主哪边报错了啊???? --------------------编程问答--------------------
页面无显示 --------------------编程问答-------------------- 把#号拿掉 告诉你个最简单的办法 去页面上放个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有值么? --------------------编程问答--------------------
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里面去的 --------------------编程问答--------------------
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> 这样还有问题吗? --------------------编程问答--------------------
username一直都可以这样直接取出来的 刚刚加了测试了下 还是去不出来password --------------------编程问答-------------------- 因为username是在提交这个action请求的时候已经封装在user这个对象里面了的 但是因为查询的条件很自由username所以user对象中会有username而不会有id和password这两个属性的
补充:Java , Java EE