通过JSP页面传递过来的关键字,查询数据库,返回查询结果给一个list,怎么样将其显示到JSP的表格中以及通过控制台输出这个list的值。
源码如下:
StuFindAction.java //学生信息查询模块
package com.cs.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.cs.dao.IUserDao;
import com.cs.model.TblStudentinfo;
import com.cs.service.IUserService;/**
* 学生查询模块
*
* @author Administrator
*/
@SuppressWarnings("serial")
public class StuFindAction extends AbstractActionSupport
{
private TblStudentinfo user;
private IUserService userservice;
private IUserDao userdao;
private List<TblStudentinfo> Stuinfo;
public void setUserdao(IUserDao userdao)
{
this.userdao = userdao;
} public TblStudentinfo getUser()
{
return user;
} public void setUser(TblStudentinfo user)
{
this.user = user;
} public void setUserservice(IUserService userservice)
{
this.userservice = userservice;
}
public List<TblStudentinfo> getStuinfo() {
return Stuinfo;
}
public void setStuinfo(List<TblStudentinfo> Stuinfo) {
this.Stuinfo = Stuinfo;
}
/**
* 通过关键字从前台获取选定的学生信息集合,返回到类型为list的Stuinfo中
*/
public String execute() throws Exception
{
HttpServletRequest request = ServletActionContext.getRequest();
String selectStu = request.getParameter("keyword");
Stuinfo = userdao.getStuInfo(selectStu);//Stuinfo通过debug可以看到其中有返回的值
for (int i = 0; i < Stuinfo.size(); i++)
{
request.setAttribute("Stuinfo", Stuinfo.get(i));
//System.out.println(Stuinfo.get(i));这句代码输出到控制台有误,不知怎么输出?
}
//System.out.println(Stuinfo);
return "success";
}
}
在struts.xml中配置如下: <action name="StuFindAction" class="com.cs.action.StuFindAction">
<result name="success">stuinfofind.jsp</result>
<result name ="input">teainfoinput.jsp</result>
</action>JSP显示页面:stuinfofind.jsp<s:iterator value="Stuinfo"></s:iterator><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22" >
<td><s:property value="sname" /></td>
</tr>就是显示不出来结果,各位高手给我看看到底哪里出现了问题,谢谢大家!
struts2LISTjsp
源码如下:
StuFindAction.java //学生信息查询模块
package com.cs.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.cs.dao.IUserDao;
import com.cs.model.TblStudentinfo;
import com.cs.service.IUserService;/**
* 学生查询模块
*
* @author Administrator
*/
@SuppressWarnings("serial")
public class StuFindAction extends AbstractActionSupport
{
private TblStudentinfo user;
private IUserService userservice;
private IUserDao userdao;
private List<TblStudentinfo> Stuinfo;
public void setUserdao(IUserDao userdao)
{
this.userdao = userdao;
} public TblStudentinfo getUser()
{
return user;
} public void setUser(TblStudentinfo user)
{
this.user = user;
} public void setUserservice(IUserService userservice)
{
this.userservice = userservice;
}
public List<TblStudentinfo> getStuinfo() {
return Stuinfo;
}
public void setStuinfo(List<TblStudentinfo> Stuinfo) {
this.Stuinfo = Stuinfo;
}
/**
* 通过关键字从前台获取选定的学生信息集合,返回到类型为list的Stuinfo中
*/
public String execute() throws Exception
{
HttpServletRequest request = ServletActionContext.getRequest();
String selectStu = request.getParameter("keyword");
Stuinfo = userdao.getStuInfo(selectStu);//Stuinfo通过debug可以看到其中有返回的值
for (int i = 0; i < Stuinfo.size(); i++)
{
request.setAttribute("Stuinfo", Stuinfo.get(i));
//System.out.println(Stuinfo.get(i));这句代码输出到控制台有误,不知怎么输出?
}
//System.out.println(Stuinfo);
return "success";
}
}
在struts.xml中配置如下: <action name="StuFindAction" class="com.cs.action.StuFindAction">
<result name="success">stuinfofind.jsp</result>
<result name ="input">teainfoinput.jsp</result>
</action>JSP显示页面:stuinfofind.jsp<s:iterator value="Stuinfo"></s:iterator><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22" >
<td><s:property value="sname" /></td>
</tr>就是显示不出来结果,各位高手给我看看到底哪里出现了问题,谢谢大家!
struts2LISTjsp
解决方案 »
- 购物车到订单
- JSP页面数据显示,每行显示5条LIST集合中的数据,多出部分提行显示
- IE6不共享session中的内容、而IE7/IE8共享session中的内容
- 语音播放器
- jstl 自定义函数问题
- (急!)在网页也用ifame嵌入其他网页,但是用acrobat生成pdf时iframe嵌入的网页无法认出
- sql注入问题
- JAVA空指针异常,请高手们帮忙,这个问题我好长时间没有解决了,多谢了。
- 才鸟求援!!!
- 关于SpringMVC2.5 使用Quartz定时,配置时路径报错
- 请老鸟给一个学习jsp的学习指导!
- struts2+hibernate+ajax做分页,‘下一页’的链接如果放在DIV里面的话就会提交两次,放在外面又无法获取到更新后的pageIndex值
2、<s:iterator value="Stuinfo"></s:iterator>这一段,要把<tr></tr>放在iterator标记中间的,相当于放在for循环大括号里
<s:iterator value="Stuinfo"><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22" >
<td><s:property value="sname" /></td>
</tr>
</s:iterator>
<TR>
<TD>${user.sname}</TD>
</TR>
</s:iterator>呃基本不用s:property ,都忘记怎么用了,我一般写代码的时候用上面这样的格式,不知道你TblStudentinfo里有哪些字段,随便写一个sname,你用实际的替换下
request.setAttribute("Stuinfo", Stuinfo.get(i));//这里会出现替换的情况,在struts2里一般不用写的,如果要写,正确的是request.setAttribute("Stuinfo", Stuinfo),也不用写在for循环里。
还有//System.out.println(Stuinfo.get(i));这句代码输出到控制台有误,不知怎么输出?
输出有误,请确保拿到的值,试下stuinfo.size();看看里面有没值,正确是不会输出不了的。
Stuinfo.get(i)
应该还要取出对象里面的属性出错的,你Stuinfo.get(i)只是返回一个对象的,要输出的取出对象里面的内容
继续Get没用jstl el表达式?给个例子 <c:if test="${!listDatas}">
<c:forEach items="${listDatas}" var="trealProject" >
<tr>
<td align="center">${trealProject.trealProjectId}</td>
<td height="25" align="center">${trealProject.name}</td>
<td align="center">${trealProject.goal}</td>
<td align="center">
<label>
<input type="radio"
name="trealProjectCheck" value="${trealProject.trealProjectId}" /> </label>
</td>
</tr>
</c:forEach>
</c:if>
// Fields
private Integer id;
private String sname;
private Integer sage;
private String ssex;
private String scard;
private Date admissionTime;
private Integer phoneNo;
private Integer guardianNo;
private String address;
private String snation;
private String recordpeople;
我用了这个方法,还是不行,我现在怀疑ACTION里的值没有传到页面上,怎么看是否传到页面上!
action中我使用了request.setAttribute("list", stuinfo);
在JSP页面中我使用了
<s:iterator value="list" var="Stu" status="sts"><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22" >
<td><input name="id" type="checkbox" id="id" value="100" class="np"></td>
<td>${Stu.id}</td>
<td>${Stu.sname}</td>
</tr>
</s:iterator>
request.setAttribute("Stuinfo", list));
<s:iterator id="rl" value="#request.Stuinfo">
<tr>
<td class="TD_STYLE2">
<s:property value="#rl.stuName"/>
</td>
<td class="TD_STYLE2">
<s:property value="#rl.stuSex"/>
</td>
<td class="TD_STYLE2">
<s:property value="#rl.stuAge"/>
</td>
</tr>
</s:iterator>
为什么我用了<s:debug><s:/debug>,提示错误,
<%@ taglib prefix="s" uri="/struts-tags" %>也有啊!
2013-7-31 16:02:26 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
ognl.NoSuchPropertyException: com.cs.action.StuFindAction.stuinfo
at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:151)
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.getProperty(ObjectAccessor.java:17)
at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2210)
at ognl.ASTProperty.getValueBody(ASTProperty.java:114)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at ognl.SimpleNode.getValue(SimpleNode.java:258)
at ognl.Ognl.getValue(Ognl.java:494)
at ognl.Ognl.getValue(Ognl.java:458)
没有stuinfo ,检查下你代码,是不是字母敲错了或者其它的
private List<TblStudentinfo> Stuinfo;
List集合不需要get,set.
可以这样写 List<TblStudentinfo> Stuinfo = new ArrayList<TblStudentinfo>();
去掉debug就好了,虽然不显示,但是也不报错了
你看我的java 代码对吗?
private List<TblStudentinfo> stuinfo;
public List<TblStudentinfo> getstuinfo() {
return stuinfo;
}
public void setstuinfo(List<TblStudentinfo> stuinfo) {
this.stuinfo = stuinfo;
}
public String execute() throws Exception
{
HttpServletRequest request = ServletActionContext.getRequest();
String selectStu = request.getParameter("keyword");
stuinfo=userdao.getStuInfo(selectStu);
request.setAttribute("list", stuinfo);
return "success";
}
jsp中是这样的<s:iterator id="stu" value="#request.list"><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22" >
<td><input name="id" type="checkbox" id="id" value="100" class="np"></td>
<td><s:property value="#stu.id"/></td>
<td><s:property value="#stu.sname"/></td>
</tr>
</s:iterator>
stuinfo=userdao.getStuInfo(selectStu);
request.setAttribute("stuinfo", stuinfo);stuinfo中可以获得数据库返回的值,怎么就传不到jsp页面中去呢!
org.apache.jasper.JasperException: An exception occurred processing JSP page /stuinfofind.jsp at line 120117: </tr>
118: </table>
119: </form>
120: <s:debug></s:debug>
121: </body>
122: </html>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:154)
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
<s:debug></s:debug>只是用来查看值栈的,为什么会报错呢
控制台输出的是:严重: Servlet.service() for servlet jsp threw exception
ognl.NoSuchPropertyException: com.cs.action.StuFindAction.stuinfo
控制台输出的是:严重: Servlet.service() for servlet jsp threw exception
ognl.NoSuchPropertyException: com.cs.action.StuFindAction.stuinfo这是不是你在页面其他的其他的地方写了stuinfo 这个list呢
public List<Gaokaochengji> findAll(){
Session session = HibernateSessionFactory.getSession();
List<Gaokaochengji> list = session.createQuery("from Gaokaochengji").list();
return list;
}
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'show.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<table border="1">
<tr>
<td colspan="15" align="center">
<h1>高考成绩信息一览表</h1>
</td>
</tr>
<tr>
<td>序号:</td>
<td>姓名:</td>
<td>学号:</td>
<td>班级:</td>
<td>语文:</td>
<td>数学:</td>
<td>外语:</td>
<td>是否体检合格:</td>
<td>是否特长生:</td>
</tr>
<s:iterator id="gaokao" value="#request.list">
<tr>
<td><s:property value="#gaokao.sid"/> </td>
<td><s:property value="#gaokao.name"/> </td>
<td><s:property value="#gaokao.xuehao"/></td>
<td><s:property value="#gaokao.class_"/></td>
<td><s:property value="#gaokao.yuwen"/></td>
<td><s:property value="#gaokao.shuxue"/></td>
<td><s:property value="#gaokao.waiyu"/></td>
<td><s:property value="#gaokao.tijian"/></td>
<td><s:property value="#gaokao.techang"/></td>
</tr>
</s:iterator>
</table>
<s:debug></s:debug>
</body>
</html>
protected HttpServletRequest request;
protected HttpServletResponse response;
protected HttpSession session;
public HttpServletRequest getRequest() {
return request;
} public void setRequest(HttpServletRequest request) {
this.request = request;
} public HttpServletResponse getResponse() {
return response;
} public void setResponse(HttpServletResponse response) {
this.response = response;
} public HttpSession getSession() {
return session;
} public void setSession(HttpSession session) {
this.session = session;
} /**
* 查询显示所有
*/
public String findAll(){
List<Gaokaochengji> list = gkDao.findAll();
System.out.println(list.size());
request.setAttribute("list", list);
return "show";
} public void setServletResponse(HttpServletResponse response) {
this.response = response;
} public void setServletRequest(HttpServletRequest request) {
this.request = request;
}