关于使用logic:iterate 整合struts 和hiberante分页的问题

海蓝树 2008-06-30 10:03:39
我有个项目,在使用logic:iterate分页的时候屏幕就一片空白。


package com.mine.struts.action;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.mine.server.Service;



public class User_showAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {



// 分析当前页码
String pageString=request.getParameter("page");
if(pageString == null || pageString.length() == 0) {
pageString = "1";
}
int currentPage= 0 ;
try {
currentPage = Integer.parseInt(pageString);// 当前页码
} catch(Exception e) {}
if(currentPage == 0) {
currentPage = 1;
}

int pageSize = 3;//每页显示的数据数
// 读取数据
Service manager = new Service();
List users = manager.findPagedAll(currentPage, pageSize);
request.setAttribute("users",users);// 保存用户列表
request.setAttribute("totalPage",manager.getTotalPage(pageSize));// 保存总页数
request.setAttribute("totalCount", manager.getTotalCount());//
//保存记录总数
request.setAttribute("currentPage", currentPage);// 保存当前页码
return mapping.findForward("display");
}
}






JSP页面:
HTML code<%@ page language="java" import="com.mine.server.*,java.util.*"
pageEncoding="GBK"%>
<%@ page contentType="text/html;charset=GBK"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

<%
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>用户列表页面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<style>

a:hover {color:red;text-decoration:none}
</style>
</head>
<body><b>用户列表页面</b><br>

<table width="100%" border="0">

</table>

<table width="80%" border="1" cellpadding="0"
style="border-collapse: collapse; " bordercolor="#000000">
<tr>
<td>用户名</td>
<td>密码</td>
<td>地址</td>
<td>电话</td>
<td>邮箱</td>
<td>性别</td>
<td>爱好</td>
<td>操作</td>
</tr>

<logic:iterate name="users" id="user">
<tr>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${user.address}</td>
<td>${user.tel}</td>
<td>${user.email}</td>
<td>${user.sex}</td>
<td>${user.enjoy}</td>
<td>${user.content}</td>
<td><a href="edit.html?id=${user.id}">修改</a></td>
</tr>
</logic:iterate>

</table> 共${totalCount}个用户
第${currentPage}页/共${totalPage}页

<c:if test="${currentPage > 1}">
[ <a
href="${pageContext.request.contextPath}/user_show.html?page=${currentPage-1
}">上一页</a> ]
</c:if>

<c:if test="${currentPage <= 1}">
[ 上一页 ]
</c:if>
<c:if test="${currentPage < totalPage}">
[ <a
href="${pageContext.request.contextPath}/user_show.html?page=${currentPage+1
}">下一页</a> ]
</c:if>
<c:if test="${currentPage >= totalPage}">
[ 下一页 ]
</c:if>
<%-- 输出 JavaScript 跳转代码 --%>
<script>
// 页面跳转函数
// 参数: 包含页码的表单元素,例如输入框,下拉框等
function jumpPage(input) {
// 页码相同就不做跳转
if(input.value == ${currentPage}) {
return;
}
var newUrl = "${pageContext.request.contextPath}/user_show.html?page=" +
input.value;
document.location = newUrl;
}
</script>
转到
<!-- 输出 HTML SELECT 元素, 并选中当前页面编码 -->
<select onchange='jumpPage(this);'>
<c:forEach var="i" begin="1" end="${totalPage}">
<option value="${i}"
<c:if test="${currentPage == i}">
selected
</c:if>
>第${i}页</option>
</c:forEach>
</select>
输入页码:<input type="text" value="${currentPage}" id="jumpPageBox"
size="3">
<input type="button" value="跳转"
onclick="jumpPage(document.getElementById('jumpPageBox'))">

</body>
</html>


...全文
258 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Landor2004 2008-06-30
  • 打赏
  • 举报
回复
先确定是不是list的问题,你把jsp中的
<logic:iterate name="users" id="user">
<tr>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${user.address}</td>
<td>${user.tel}</td>
<td>${user.email}</td>
<td>${user.sex}</td>
<td>${user.enjoy}</td>
<td>${user.content}</td>
<td><a href="edit.html?id=${user.id}">修改</a></td>
</tr>
</logic:iterate>
去掉,看看页面能不能出来
海蓝树 2008-06-30
  • 打赏
  • 举报
回复
还是不行,应该是这样吗?<logic:iterate name="users" id="user" type="com.mine.hib.T3">下面是我DAO类和实体类T3.java

T3.java
package com.mine.hib;

// Generated by MyEclipse Persistence Tools

import java.util.Set;

/**
* T3 generated by MyEclipse Persistence Tools
*/
public class T3 extends AbstractT3 implements java.io.Serializable {

// Constructors

/** default constructor */
public T3() {
}

/** minimal constructor */
public T3(String username) {
super(username);
}

/** full constructor */
public T3(String username, String password, String address, String tel,
String email, String sex, String enjoy, String content) {
super(username, password, address, tel, email, sex, enjoy, content);
}

}

T3DAO.java

package com.mine.hib;

import java.util.List;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.criterion.Example;

/**
* Data access object (DAO) for domain model class T3.
*
* @see com.mine.hib.T3
* @author MyEclipse Persistence Tools
*/

public class T3DAO extends BaseHibernateDAO {
private static final Log log = LogFactory.getLog(T3DAO.class);

// property constants
public static final String PASSWORD = "password";

public static final String ADDRESS = "address";

public static final String TEL = "tel";

public static final String EMAIL = "email";

public static final String SEX = "sex";

public static final String ENJOY = "enjoy";

public static final String CONTENT = "content";

public void save(T3 transientInstance) {
log.debug("saving T3 instance");
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}

public void delete(T3 persistentInstance) {
log.debug("deleting T3 instance");
try {
getSession().delete(persistentInstance);
log.debug("delete successful");
} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
}

public T3 findById(java.lang.String id) {
log.debug("getting T3 instance with id: " + id);
try {
T3 instance = (T3) getSession().get("com.mine.hib.T3", id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}

public List findByExample(T3 instance) {
log.debug("finding T3 instance by example");
try {
List results = getSession().createCriteria("com.mine.hib.T3").add(
Example.create(instance)).list();
log.debug("find by example successful, result size: "
+ results.size());
return results;
} catch (RuntimeException re) {
log.error("find by example failed", re);
throw re;
}
}

public List findByProperty(String propertyName, Object value) {
log.debug("finding T3 instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from T3 as model where model." + propertyName
+ "= ?";
Query queryObject = getSession().createQuery(queryString);
queryObject.setParameter(0, value);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}

public List findByPassword(Object password) {
return findByProperty(PASSWORD, password);
}

public List findByAddress(Object address) {
return findByProperty(ADDRESS, address);
}

public List findByTel(Object tel) {
return findByProperty(TEL, tel);
}

public List findByEmail(Object email) {
return findByProperty(EMAIL, email);
}

public List findBySex(Object sex) {
return findByProperty(SEX, sex);
}

public List findByEnjoy(Object enjoy) {
return findByProperty(ENJOY, enjoy);
}

public List findByContent(Object content) {
return findByProperty(CONTENT, content);
}

public List findAll() {
log.debug("finding all T3 instances");
try {
String queryString = "from T3";
Query queryObject = getSession().createQuery(queryString);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}

public T3 merge(T3 detachedInstance) {
log.debug("merging T3 instance");
try {
T3 result = (T3) getSession().merge(detachedInstance);
log.debug("merge successful");
return result;
} catch (RuntimeException re) {
log.error("merge failed", re);
throw re;
}
}

public void attachDirty(T3 instance) {
log.debug("attaching dirty T3 instance");
try {
getSession().saveOrUpdate(instance);
log.debug("attach successful");
} catch (RuntimeException re) {
log.error("attach failed", re);
throw re;
}
}

public void attachClean(T3 instance) {
log.debug("attaching clean T3 instance");
try {
getSession().lock(instance, LockMode.NONE);
log.debug("attach successful");
} catch (RuntimeException re) {
log.error("attach failed", re);
throw re;
}
}

public int getTotalCount() {
Query q = getSession().createQuery("select count(*) from T3");
List cc = q.list();
Integer a = (Integer) cc.get(0);
return a.intValue();
}
/**
* 分页显示数据.
*
* @param currentPage
* 当前页码, 从 1 开始
* @param pageSize
* 每页显示数据量
* @return 分页后的数据列表 - List<Student>
*/
public List findPagedAll(int currentPage, int pageSize) {

log.debug("分页查找");
try {
if (currentPage == 0) {
currentPage = 1;
}
String queryString = "from T3";
Query queryObject = getSession().createQuery(queryString);
queryObject.setFirstResult((currentPage - 1) * pageSize);
queryObject.setMaxResults(pageSize);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}
}
Landor2004 2008-06-30
  • 打赏
  • 举报
回复
加上type,如下

<logic:iterate id="user" name="users" scope="request" type="com.mine.hib.你的实体类">

海蓝树 2008-06-30
  • 打赏
  • 举报
回复
users不是空的,加了之后也是一片空白,使用<bean:write>输出了这个:[com.mine.hib.T3@6c5356, com.mine.hib.T3@97d3f0, com.mine.hib.T3@1db6942]
Landor2004 2008-06-30
  • 打赏
  • 举报
回复
如果users是空的话,就会空白,你说的不清楚,users是空吗,加上这句
<logic:present name="users">
<logic:iterate name="users" id="user">
......
</logic:iterate>
</logic:present>
海蓝树 2008-06-30
  • 打赏
  • 举报
回复
我知道错误了,是<a href="edit.html?id=${user.id}">修改 </a>的原因,谢谢了!~~
海蓝树 2008-06-30
  • 打赏
  • 举报
回复
去掉
<logic:iterate name="users" id="user">
<tr>
<td>${user.username} </td>
<td>${user.password} </td>
<td>${user.address} </td>
<td>${user.tel} </td>
<td>${user.email} </td>
<td>${user.sex} </td>
<td>${user.enjoy} </td>
<td>${user.content} </td>
<td> <a href="edit.html?id=${user.id}">修改 </a> </td>
</tr>
</logic:iterate>
之后出现就出来了,应该怎么改呢
水瘦山寒 2008-06-30
  • 打赏
  • 举报
回复
页面空白,应该是后台出现异常了哦。。
捕捉后台异常,看看控制台,再贴出来
代码下载链接: https://pan.quark.cn/s/3379ee0243ef 在IAR调试环节中,使用者或许会遭遇各式各样的故障,这些故障可能波及编译、链接以及执行时的情形。下面列出了部分常见的IAR调试故障及其应对措施: 1. **头文件中全局变量的声明**:IAR链接器不允许在头文件里声明全局变量,但容许多个源文件同时引用同一变量。一旦出现此类状况,应将全局变量声明为`extern`类型。例如,错误信息`Error[e27]: Entry "tagData" redefined`可以通过在头文件中附加`extern`关键字来纠正。 2. **隐式指定的函数**:`Error[Pe223]: function "assert_param" declared implicitly`指出函数`assert_param`未被显式地定义。务必确保包含了适宜的头文件,比如`stm32f10x_conf.h`,该文件内含了该函数的原型。倘若已包含,则可能是库文件版本不匹配或项目配置存在疑惑。 3. **无原型指引的函数**:`Error[Pa045]: function "assert_param" has no prototype`与上述情形相似,意指函数缺乏相应的原型声明。仔细核对相关头文件,保证它们在使用前已被适当地引入。 4. **标识符未获定义**:`Error[Pe020]: identifier "RCC_APB2Periph_GPIOC" is undefined`表明某个标识符的定义未能找到,这通常源于未引入必要的头文件。在此情形下,需包含`stm32f10x_rcc.h`。 5. **宏定义与编译文件的矛盾**:若尝试调整设备配置,如从STM...
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 MPU6050是由InvenSense公司研发的六轴惯性测量单元(IMU),该设备融合了三轴陀螺仪和三轴加速度计。它能够即时检测设备在三维空间中的运动参数,例如角速度和加速度等指标。DMP(Digital Motion Processing)是MPU6050内部集成的一种硬件加速技术,它能够对传感器数据进行处理并实现姿态计算,从而降低主控制器如STM32的计算压力。 STM32是一款基于ARM Cortex-M架构的微控制器,该器件在嵌入式系统领域得到了广泛部署,其特点是处理性能高且能耗低,非常适合用于处理复杂的传感器数据和控制任务。在MPU6050的姿态计算应用场景中,STM32通常负责与MPU6050进行通信、获取传感器数据,并基于DMP提供的结果进行后续的数据处理和应用。 在"MPU6050姿态计算STM32源代码(DMP)"这一项目中,研究者已经完成了将MPU6050的六轴数据通过DMP进行加工,并利用STM32进行读取和解析这些数据的工作。源代码可能涵盖以下几个核心组成部分: 1. **配置初始化**:初始化STM32的GPIO、I2C接口,目的是为了与MPU6050建立有效的通信连接。此外,还需要对MPU6050的寄存器进行设置,激活DMP功能,并设定采样频率和滤波器参数。 2. **数据交换**:利用STM32的I2C接口周期性地从MPU6050获取DMP的输出结果,这些数据通常涵盖设备的角速度、加速度以及姿态角(包括俯仰角、翻滚角和偏航角等)。 3. **姿态计算**:尽管DMP已经对原始数据进行了基础处理,但在STM32端可能还需要进行二次处理,例如采用卡尔...

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧