流程如下1.在地址栏先访问这个action http://127.0.0.1:8080/OTD/SDBServer
读取数据,并存在一个名为dbl的map2.当成功后会当通struts.xml的设置,将这个dbl带到index.jsp中,作为index.jsp的基础数据显示出来3.当index.jsp让用户输入完,提交。去到ConvertXML的这个aition,因输入错误,将条回index.jsp去4.但index.jsp需要dbl这个基础数据才能正常显示,所以不能跳向index.jsp,而是去SDBServer
问题来了,当跳回index.jsp后,原来用户输入的参数都不见了,不管我怎么弄,还是返回不了参数到index.jsp上代码如下:---------------------------------------------struts.xml<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="message"></constant> <package name="struts2" extends="struts-default" namespace="/">
<action name="SDBServer" class="com.struts.action.SDBServerAction">
<result name="success" >/index.jsp</result>
</action>
<action name="ConvertXML" class="com.struts.action.ConvertXMLAction">
<result name="success">/i.jsp</result>
<result name="input" type="chain">SDBServer</result>
</action>
</package>
</struts>
---------------------------------------------------------ConvertXMLpackage com.struts.action;
import java.util.Calendar;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;public class ConvertXMLAction extends ActionSupport
{
//用于带回参数
private String mode;
//单辆
private String sregistrationNo;
private Integer scommNo;
private Calendar ssdate;
private Calendar sedate;
private Integer sinterval;
private String sdb;
//帐号
private String aaccount;
private String apassword;
private List carListInfo;
private Calendar asdate;
private Calendar aedate;
private Integer ainterval;
private String adb;
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
}
public String getSregistrationNo() {
return sregistrationNo;
}
public void setSregistrationNo(String sregistrationNo) {
this.sregistrationNo = sregistrationNo;
}
public Integer getScommNo() {
return scommNo;
}
public void setScommNo(Integer scommNo) {
this.scommNo = scommNo;
}
public Calendar getSsdate() {
return ssdate;
}
public void setSsdate(Calendar ssdate) {
this.ssdate = ssdate;
}
public Calendar getSedate() {
return sedate;
}
public void setSedate(Calendar sedate) {
this.sedate = sedate;
}
public Integer getSinterval() {
return sinterval;
}
public void setSinterval(Integer sinterval) {
this.sinterval = sinterval;
}
public String getSdb() {
return sdb;
}
public void setSdb(String sdb) {
this.sdb = sdb;
}
public String getAaccount() {
return aaccount;
}
public void setAaccount(String aaccount) {
this.aaccount = aaccount;
}
public String getApassword() {
return apassword;
}
public void setApassword(String apassword) {
this.apassword = apassword;
}
public List getCarListInfo() {
return carListInfo;
}
public void setCarListInfo(List carListInfo) {
this.carListInfo = carListInfo;
}
public Calendar getAsdate() {
return asdate;
}
public void setAsdate(Calendar asdate) {
this.asdate = asdate;
}
public Calendar getAedate() {
return aedate;
}
public void setAedate(Calendar aedate) {
this.aedate = aedate;
}
public Integer getAinterval() {
return ainterval;
}
public void setAinterval(Integer ainterval) {
this.ainterval = ainterval;
}
public String getAdb() {
return adb;
}
public void setAdb(String adb) {
this.adb = adb;
}
public void validate()
{
System.out.println("rrrrr");
this.addActionError("rrr");
} public String execute() throws Exception
{
return "input";
}}---------------------------------------------------------SDBServer
package com.struts.action;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.Action;
import com.sfgiuggese.util.Global;public class SDBServerAction implements Action
{
private Map dataBase=new HashMap(); //返回结果集
//用于带回参数
private String mode;
//单辆
private String sregistrationNo;
private Integer scommNo;
private Calendar ssdate;
private Calendar sedate;
private Integer sinterval;
private String sdb;
//帐号
private String aaccount;
private String apassword;
private List carListInfo;
private Calendar asdate;
private Calendar aedate;
private Integer ainterval;
private String adb;
public Map getDataBase() {
return dataBase;
} public void setDataBase(Map dataBase) {
this.dataBase = dataBase;
}
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
}
public String getSregistrationNo() {
return sregistrationNo;
}
public void setSregistrationNo(String sregistrationNo) {
this.sregistrationNo = sregistrationNo;
}
public Integer getScommNo() {
return scommNo;
}
public void setScommNo(Integer scommNo) {
this.scommNo = scommNo;
}
public Calendar getSsdate() {
return ssdate;
}
public void setSsdate(Calendar ssdate) {
this.ssdate = ssdate;
}
public Calendar getSedate() {
return sedate;
}
public void setSedate(Calendar sedate) {
this.sedate = sedate;
}
public Integer getSinterval() {
return sinterval;
}
public void setSinterval(Integer sinterval) {
this.sinterval = sinterval;
}
public String getSdb() {
return sdb;
}
public void setSdb(String sdb) {
this.sdb = sdb;
}
public String getAaccount() {
return aaccount;
}
public void setAaccount(String aaccount) {
this.aaccount = aaccount;
}
public String getApassword() {
return apassword;
}
public void setApassword(String apassword) {
this.apassword = apassword;
}
public List getCarListInfo() {
return carListInfo;
}
public void setCarListInfo(List carListInfo) {
this.carListInfo = carListInfo;
}
public Calendar getAsdate() {
return asdate;
}
public void setAsdate(Calendar asdate) {
this.asdate = asdate;
}
public Calendar getAedate() {
return aedate;
}
public void setAedate(Calendar aedate) {
this.aedate = aedate;
}
public Integer getAinterval() {
return ainterval;
}
public void setAinterval(Integer ainterval) {
this.ainterval = ainterval;
}
public String getAdb() {
return adb;
}
public void setAdb(String adb) {
this.adb = adb;
} public String execute() throws Exception
{
//生成 dataBase
return SUCCESS;
}}
读取数据,并存在一个名为dbl的map2.当成功后会当通struts.xml的设置,将这个dbl带到index.jsp中,作为index.jsp的基础数据显示出来3.当index.jsp让用户输入完,提交。去到ConvertXML的这个aition,因输入错误,将条回index.jsp去4.但index.jsp需要dbl这个基础数据才能正常显示,所以不能跳向index.jsp,而是去SDBServer
问题来了,当跳回index.jsp后,原来用户输入的参数都不见了,不管我怎么弄,还是返回不了参数到index.jsp上代码如下:---------------------------------------------struts.xml<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="message"></constant> <package name="struts2" extends="struts-default" namespace="/">
<action name="SDBServer" class="com.struts.action.SDBServerAction">
<result name="success" >/index.jsp</result>
</action>
<action name="ConvertXML" class="com.struts.action.ConvertXMLAction">
<result name="success">/i.jsp</result>
<result name="input" type="chain">SDBServer</result>
</action>
</package>
</struts>
---------------------------------------------------------ConvertXMLpackage com.struts.action;
import java.util.Calendar;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;public class ConvertXMLAction extends ActionSupport
{
//用于带回参数
private String mode;
//单辆
private String sregistrationNo;
private Integer scommNo;
private Calendar ssdate;
private Calendar sedate;
private Integer sinterval;
private String sdb;
//帐号
private String aaccount;
private String apassword;
private List carListInfo;
private Calendar asdate;
private Calendar aedate;
private Integer ainterval;
private String adb;
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
}
public String getSregistrationNo() {
return sregistrationNo;
}
public void setSregistrationNo(String sregistrationNo) {
this.sregistrationNo = sregistrationNo;
}
public Integer getScommNo() {
return scommNo;
}
public void setScommNo(Integer scommNo) {
this.scommNo = scommNo;
}
public Calendar getSsdate() {
return ssdate;
}
public void setSsdate(Calendar ssdate) {
this.ssdate = ssdate;
}
public Calendar getSedate() {
return sedate;
}
public void setSedate(Calendar sedate) {
this.sedate = sedate;
}
public Integer getSinterval() {
return sinterval;
}
public void setSinterval(Integer sinterval) {
this.sinterval = sinterval;
}
public String getSdb() {
return sdb;
}
public void setSdb(String sdb) {
this.sdb = sdb;
}
public String getAaccount() {
return aaccount;
}
public void setAaccount(String aaccount) {
this.aaccount = aaccount;
}
public String getApassword() {
return apassword;
}
public void setApassword(String apassword) {
this.apassword = apassword;
}
public List getCarListInfo() {
return carListInfo;
}
public void setCarListInfo(List carListInfo) {
this.carListInfo = carListInfo;
}
public Calendar getAsdate() {
return asdate;
}
public void setAsdate(Calendar asdate) {
this.asdate = asdate;
}
public Calendar getAedate() {
return aedate;
}
public void setAedate(Calendar aedate) {
this.aedate = aedate;
}
public Integer getAinterval() {
return ainterval;
}
public void setAinterval(Integer ainterval) {
this.ainterval = ainterval;
}
public String getAdb() {
return adb;
}
public void setAdb(String adb) {
this.adb = adb;
}
public void validate()
{
System.out.println("rrrrr");
this.addActionError("rrr");
} public String execute() throws Exception
{
return "input";
}}---------------------------------------------------------SDBServer
package com.struts.action;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.Action;
import com.sfgiuggese.util.Global;public class SDBServerAction implements Action
{
private Map dataBase=new HashMap(); //返回结果集
//用于带回参数
private String mode;
//单辆
private String sregistrationNo;
private Integer scommNo;
private Calendar ssdate;
private Calendar sedate;
private Integer sinterval;
private String sdb;
//帐号
private String aaccount;
private String apassword;
private List carListInfo;
private Calendar asdate;
private Calendar aedate;
private Integer ainterval;
private String adb;
public Map getDataBase() {
return dataBase;
} public void setDataBase(Map dataBase) {
this.dataBase = dataBase;
}
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
}
public String getSregistrationNo() {
return sregistrationNo;
}
public void setSregistrationNo(String sregistrationNo) {
this.sregistrationNo = sregistrationNo;
}
public Integer getScommNo() {
return scommNo;
}
public void setScommNo(Integer scommNo) {
this.scommNo = scommNo;
}
public Calendar getSsdate() {
return ssdate;
}
public void setSsdate(Calendar ssdate) {
this.ssdate = ssdate;
}
public Calendar getSedate() {
return sedate;
}
public void setSedate(Calendar sedate) {
this.sedate = sedate;
}
public Integer getSinterval() {
return sinterval;
}
public void setSinterval(Integer sinterval) {
this.sinterval = sinterval;
}
public String getSdb() {
return sdb;
}
public void setSdb(String sdb) {
this.sdb = sdb;
}
public String getAaccount() {
return aaccount;
}
public void setAaccount(String aaccount) {
this.aaccount = aaccount;
}
public String getApassword() {
return apassword;
}
public void setApassword(String apassword) {
this.apassword = apassword;
}
public List getCarListInfo() {
return carListInfo;
}
public void setCarListInfo(List carListInfo) {
this.carListInfo = carListInfo;
}
public Calendar getAsdate() {
return asdate;
}
public void setAsdate(Calendar asdate) {
this.asdate = asdate;
}
public Calendar getAedate() {
return aedate;
}
public void setAedate(Calendar aedate) {
this.aedate = aedate;
}
public Integer getAinterval() {
return ainterval;
}
public void setAinterval(Integer ainterval) {
this.ainterval = ainterval;
}
public String getAdb() {
return adb;
}
public void setAdb(String adb) {
this.adb = adb;
} public String execute() throws Exception
{
//生成 dataBase
return SUCCESS;
}}
{
//生成 dataBase
return “SDBServer”;
}
struts2是不用这样的吧,我这情况有点复杂,如果我改一下流程,先打开index.jsp再提交给action,action校验到有错,返回给index.jsp的话不用你这样,也一样是保留得到提交前用户输入的信息的
读取数据,并存在一个名为dbl的map2.当成功后会当通struts.xml的设置,将这个dbl带到index.jsp中,作为index.jsp的基础数据显示出来3.当index.jsp让用户输入完,提交。去到ConvertXML的这个aition,因输入错误,将条回index.jsp去4.但index.jsp需要dbl这个基础数据才能正常显示,所以不能跳向index.jsp,而是去SDBServer
我调试过,当ConvertXML跳向SDBServer的时候,SDBServer是能用字段的get方法,得到转过来的值。
就差最后一步,SDBServer差没有将值再传给index.jsp
楼主你的action里面的那些显示字段干嘛不用vo类里面,这样多累啊。
需要返回的数据重新set没有?
这样一来,不管有没有返回,这个值都是空的2.类型转换错误,如Integer和Calendar,服务器返回页面的那个convertToString方法我写错了,程序出错,所以返回null,页面自然得不到值