流程如下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;
}}

解决方案 »

  1.   

    这么多啊 应该发到javaweb里吧  这是se版 个人认为你应该发用户的东西存到session里吧
      

  2.   

    public String execute() throws Exception 
    {
    //生成 dataBase
    return “SDBServer”;
    }
      

  3.   

    你把输入的东西也存入valueStack中啊,这样页面使用Struts2标签时就可以了啊
      

  4.   

    ,当跳回index.jsp后,原来用户输入的参数都不见了你可以试着用session来保存
      

  5.   

    struts2 不是默认会调用get set方法取参数的吗?我是他的基本功能啊,我不想另外再作保存啊
      

  6.   

    你的查询条件的value都是默认为空 怎么回传呀?应该是下面这样子吧<input id="seachKey" name="searchName" type="text" ;" value="${searchName}" style="width: 90px;">
      

  7.   


    struts2是不用这样的吧,我这情况有点复杂,如果我改一下流程,先打开index.jsp再提交给action,action校验到有错,返回给index.jsp的话不用你这样,也一样是保留得到提交前用户输入的信息的
      

  8.   

    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
    我调试过,当ConvertXML跳向SDBServer的时候,SDBServer是能用字段的get方法,得到转过来的值。
    就差最后一步,SDBServer差没有将值再传给index.jsp
      

  9.   


    楼主你的action里面的那些显示字段干嘛不用vo类里面,这样多累啊。
    需要返回的数据重新set没有?
      

  10.   

    get set 在struts2中不是都是自动调用的吗?还用自已来?
      

  11.   

    直接使用struts标签库,会自动保存的。
      

  12.   

    打到问题了,有2个1.我在jsp中写成<s:textfield name="sregistrationno"  value=""/>
    这样一来,不管有没有返回,这个值都是空的2.类型转换错误,如Integer和Calendar,服务器返回页面的那个convertToString方法我写错了,程序出错,所以返回null,页面自然得不到值