Struts分步表单提交

      如果需要提交的表单内容比较多,一个JSP页面不够用,就需要多个表单依次提交,最后一起汇总给
ActionServlet处理

   JSP1页面(其中hidden字段很重要,表示是第一个提交页面)
  
  < html >
     
< head >
     
< title > jsp1 </ title >
     
</ head >
     
< body  bgcolor ="#ffffff" >
     
< html:form  action ="/insertAction.do" >
       
< html:hidden  property ="page"  value ="1" />
       name:
< html:text  property ="name" />
       pass:
< html:text  property ="password" />
      
< html:submit > submit
     
</ html:submit >
    
</ html:form >
    
</ body >
    
</ html >

JSP2页面

 

      < html >
     
< head >
     
< title > jsp2 </ title >  
     
</ head >
     
< body  bgcolor ="#ffffff" >
     
< html:form  action ="/insertAction.do" >
       
< html:hidden  property ="page"  value ="2" />
       city:
< html:text  property ="city" />
      
< html:submit > submit
     
</ html:submit >
    
</ html:form >
    
</ body >
    
</ html >

 

为两个页面建立共同的ActionForm,注意,scope要为session

 

public   class  InsertForm  extends  ActionForm  {
    
private String name=null;
    
private String password=null;
    
private String city=null;
    
private String page=null;
    
public ActionErrors validate(ActionMapping actionMapping,
                                 HttpServletRequest  
                                 httpServletRequest) 
{

        ActionErrors errors
=new ActionErrors();
        
int numpage=0;
        
try {
            numpage
=new Integer(page).intValue();
        }
 catch (Exception ex) {          
        }

        
if(numpage==1){
            
if((name==null)||(name.length()<1)){
                errors.add(
"name",new ActionMessage("123"));
            }

            
if((password==null)||(password.length()<1)){
                errors.add(
"password",new ActionMessage("123"));
            }

        }

        
if(numpage==2){
           
if((city==null)||(city.length()<1)){
               errors.add(
"city",new ActionMessage("123"));
           }

       }

       
return errors;
    }

    
public void reset(ActionMapping actionMapping,
                      HttpServletRequest servletRequest) 
{
        
int numpage=0;
        
try {
            numpage
=new Integer(servletRequest.getParameter
                   (
"page")).intValue();
        }
 catch (Exception ex) {  
        }

        
if(numpage==1){
            name
=null;
            password
=null;
        }

        
if(numpage==2){
            city
=null;
        }

    }

    
public String getCity() {
        
return city;
    }

    
public String getName() {
        
return name;
    }

    
public String getPage() {
        
return page;
    }

    
public String getPassword() {
        
return password;
    }

    
public void setPassword(String password) {
        
this.password = password;
    }

    
public void setPage(String page) {
        
this.page = page;
    }

    
public void setName(String name) {
        
this.name = name;
    }

    
public void setCity(String city) {
        
this.city = city;
    }

}


以上是两个html表单都对应I"nsertForm,在创建InsertForm时有以下几点需要注意
(1)提供html表单的隐藏字段page对应的page属性
(2)在reset方法中,只把和当前正在处理的表单相关的属性恢复为默认值
(3)在validate中,仅对和当前表单相关的属性进行验证
Struts-config.xml内容
< struts-config >
  
< form-beans >
    
< form-bean  name ="insertForm"  type ="untitled2.InsertForm"   />
  
</ form-beans >
  
< action-mappings >
    
< action  input ="/jsp1.jsp"  name ="insertForm"  
       parameter
="/jsp2.jsp"  path ="/insertAction"  
       scope
="session"  
       type
="org.apache.struts.actions.ForwardAction"  
       validate
="true"   />
    
< action  input ="/jsp2.jsp"  name ="insertForm"  
       path
="/insertAction2"  scope ="session"  
       type
="untitled2.InsertAction2"  validate ="true"   />
  
</ action-mappings >
  
< message-resources  parameter ="ApplicationResources"   />
</ struts-config >

 

JSP1页面的action为/insertAction.do
JSP2页面的action为/insertAction2.do

你可能感兴趣的:(html,jsp,struts,session,null,action)