Struts-分页表单
来源:互联网 发布:冰岛语消失知乎 编辑:程序博客网 时间:2024/04/29 10:10
有时候,由于表单数据太多,无法在同一个页面显示(如用于用户注册的表单),可以把它拆分成多个表单,分多个页面显示,在这种情况下,即可以为每个表单创建单独的ActionForm,也可以只创建一个ActionForm,它和多个表单对应,下面就来介绍通过struts来实现此功能,本例使用一个ActionForm共享多个表单的机制来实现,运行截图如下:
1.进入首页,输入帐号与手机信息:
2.点击“下一页”,进入下页表单页面:
3.最后输入信息点击“提交”后,显示用户输入的信息:
4.同时如果用户在表单提交中出现错误给予提示信息:
下面就是相应的代码:
1.表单的第一页index.jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %><!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> <html:form action="/nextPageForm.do" method="post"> <html:hidden property="page" value="1" /> <table> <tr> <td>帐号:</td> <td><html:text property="name" size="14" /></td> <td><font color="red"><html:errors property="name" /></font></td> </tr> <tr> <td>手机:</td> <td><html:text property="phone" size="14" /></td> <td><font color="red"><html:errors property="phone" /></font></td> </tr> <tr> <td colspan="2"> <html:submit>下一页</html:submit> <html:reset>重置</html:reset> </td> </tr> </table> </html:form></body></html>
2.表单的第二页next.jsp视图:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %><!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> <html:form action="/confirmAction.do"> <html:hidden property="page" value="2" /> 邮箱:<html:text property="email" /> <font color="red"><html:errors property="email" /></font> <br /> <html:button property="prePage" onclick="location.href='index.jsp'">上一页</html:button> <html:submit>提交</html:submit> <html:reset>重置</html:reset> </html:form></body></html>3.对应的信息息确认画面confirm.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %><%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %><!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><logic:present name="insertForm"> 帐号:<bean:write name="insertForm" property="name" /><br /> 手机:<bean:write name="insertForm" property="phone" /><br /> 邮件:<bean:write name="insertForm" property="email" /><br /></logic:present></body></html>注意:上面的表单页面视图中,采用一个隐藏域page来标记当前表单的页数,这样做方便ActionForm后台的检证与reset()恢复默认值的操作。
4.相应的ActionForm代码:
package test.struts.form;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.ActionMessage;public class InsertForm extends ActionForm {private String name;private String phone;private String email;private String page = null;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getPage() {return page;}public void setPage(String page) {this.page = page;}public void reset(ActionMapping mapping, HttpServletRequest request) {int numPage = 0;try {numPage = Integer.parseInt(request.getParameter("page"));} catch(NumberFormatException e) {}if(numPage==1) {name=null;phone=null;} else if (numPage==2) {email=null;}page=null;}public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {ActionErrors errors = new ActionErrors();int numPage = 0;try {numPage = Integer.parseInt(page);} catch(NumberFormatException e) {}if (numPage==1){if(name==null||name.length()<=0) {errors.add("name", new ActionMessage("error.name.requried"));}if(phone==null||phone.length()<=0) {errors.add("phone", new ActionMessage("error.phone.requried"));}} else if(numPage==2) {if (email==null||email.length()<=0) {errors.add("email", new ActionMessage("error.email.requried"));}}return errors;}}上面的ActionForm通过page来判断对不同页面的不同处理;这在里要注意到在reset()方法中使用request的方式来得到page,而不是直接通过page属性来判断处理的是哪一页,是因为Struts框架先调用reset()方法之后,才把用户输入的表单数据组装到ActionForm中,因此要通过request对象得到;而执行validate()方法时Struts框架在调用validate()方法之前就已经把用户输入的表单数据组装到ActionForm中,因此可以直接根据page属性来判断页面。
5.Struts配置文件struts-config.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config> <form-beans> <form-bean name="insertForm" type="test.struts.form.InsertForm" /> </form-beans> <action-mappings> <action path="/nextPageForm" name="insertForm" validate="true" input="/index.jsp" scope="session" parameter="/next.jsp" type="org.apache.struts.actions.ForwardAction" > </action> <action path="/confirmAction" name="insertForm" validate="true" input="/next.jsp" scope="session" parameter="/confirm.jsp" type="org.apache.struts.actions.ForwardAction" > </action> </action-mappings> <message-resources parameter="application" /></struts-config>由于在这里只是简单的数据传递,没有涉及到业务逻辑代码,因此没有构建自定义的Action类,而是使用了Struts框架的内置Action:ForwardAction。
注意:在使用ForwardAction类时在Struts1.3中注意引入struts-extras-1.3.10.jar包,它其中包含了一些Struts框架内置的Action类。
最后给出上面示例中引入的application.properties资源文件,如下:
error.email.requried=邮件为必须项!error.name.requried=帐号为必须项!error.phone.requried=手机为必须项!
- Struts-分页表单
- struts分页
- Struts分页
- struts分页
- struts分页
- Struts分页
- Struts分页
- struts分页
- struts分页
- struts分页
- struts.分页
- 分页 STRUTS+HIBERNATE+ORACLE分页
- struts 表单验证
- struts表单验证
- Struts分步表单提交
- struts表单验证详解
- Struts Validator检查表单
- struts表单验证
- ipvsadm命令详解
- 当表字段过多时,hibernate怎么优化?
- 一次遍历找链表倒数第n个节点
- JVM资源监控
- c++标准异常类的继承实现
- Struts-分页表单
- oracle 11g 学习笔记 10_30
- django 没有设置404错误页面的时候 ,尽量自定义404页面
- jfreechart生成柱状图写到jsp页面并打印
- 忧雨的伤感空间日志发布:左手夹烟,右手夹寂寞
- Redis
- java 数据库连接池 c3p0 使用及参数详解,支持重连
- 教你写一个可以运行java的bat文件
- (3) double-linked list: insque remque