页面只显示列名,不显示数据库里的数据
从书上copy了个struts2和hibernate的例子,数据库能够连接,但是只显示各字段名称,没法显示库里的数据,iterator没有使用到。是不是哪块代码写错了。数据库的表设计得很简单,三个字段id name price,求大神帮忙。
showAllInfo.jsp代码
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>产品列表</title>
</head>
<body bgcolor="#CCDDEE">
<center>
<h2>产品列表</h2>
<table border="2" bgcolor="AACCBBDD">
<tr>
<td>产品</td>
<td>产品名称</td>
<td>产品价格</td>
<td>是否删除</td>
<td>是否更新</td>
</tr>
<s:iterator value="#request.all" id="product">
<tr>
<td><s:property value="#product.id"/></td>
<td><s:property value="#product.name"/></td>
<td><s:property value="#product.price"/></td>
<td><a href="delete.action?id=<s:property value='#product.id'/>">删除</a></td>
<td><a href="update.jsp?id=<s:property value='#product.id'/>">更新</a></td>
</tr>
</s:iterator>
</table>
<a href="add.jsp">添加产品</a>
</center>
</body>
</html>
showAllAction.java代码
//显示所有信息
package com.javaweb.action;
import java.util.List;
import net.hncu.factory.ServiceFactory;
import org.apache.struts2.ServletActionContext;
import com.javaweb.service.*;
import com.opensymphony.xwork2.ActionSupport;
public class ShowAllInfoAction extends ActionSupport{
public String execute()throws Exception{
ProductService ps=ServiceFactory.getServiceInstance();
List all=ps.queryAllProduct();
ServletActionContext.getRequest().setAttribute("all", all);
return SUCCESS;
}
}
struts.xml配置文件
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2" extends="struts-default" namespace="/" abstract="true">
<!--定义showAll的Action-->
<action name="showAllInfo" class="com.javaweb.action.ShowAllInfoAction">
<result name="SUCCESS">/showAll.action</result>
<result name="input">/add.jsp</result>
<result name="error">add.jsp</result>
</action>
<!--定义add的Action-->
<action name="add" class="com.javaweb.action.AddAction">
<!--定义处理结果与视图资源的关系-->
<result name="SUCCESS" type="redirect">/success.jsp</result>
</action>
<!--定义delete的Action-->
<action name="delete" class="com.javaweb.action.DeleteAction">
<!--定义处理结果与视图资源的关系-->
<result name="SUCCESS" type="redirect">/showAll.action</result>
</action>
<!--定义update的Action-->
<action name="update" class="com.javaweb.action.UpdateAction">
<!--定义处理结果与视图资源的关系-->
<result name="SUCCESS" type="redirect">/showAll.action</result>
</action>
</package>
</struts>
[解决办法]
你用的什么IDE? 可以在showAllAction.java里打断点吗?就打在List all=ps.queryAllProduct()。
然后debug模式再跑一遍,watch对象all。
[解决办法]
你structs.xml配置的根据字符串返回资源是有错误的,当你根据success跳到另外一个Action不指定type时,默认是redirectAction,你返回的数据就没有了,你直接指定跳到/showAllInfo.jsp页面应该可以拿到数据。为什么又要跳转到一个Action了??你中间又没有别的业务逻辑处理,直接返回视图资源