国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Struts2教程2:處理一個form多個submit

      在很多 Web 應(yīng)用中,為了完成不同的工作,一個 HTML form 標(biāo)簽中可能有兩個或多個 submit 按鈕,如下面的代碼所示:

< html  action ="
"
  method ="post" >
 

< input  type ="submit"  value ="保存"   />
< input  type ="submit"  value ="打印"   />
</ html >

 

由于在 <form>中的多個提交按鈕都向一個 action提交,使用 Struts2 Action execute方法就無法判斷用戶點擊了哪一個提交按鈕。如果大家使用過 Struts1.x就會知道在 Struts1.2.9之前的版本需要使用一個 LookupDispatchAction動作來處理含有多個 submit form。但使用 LookupDispatchAction動作需要訪問屬性文件,還需要映射,比較麻煩。從 Struts1.2.9開始,加入了一個 EventDispatchAction動作。這個類可以通過 java反射來調(diào)用通過 request參數(shù)指定的動作(實際上只是判斷某個請求參數(shù)是不存在,如果存在,就調(diào)用在 action類中和這個參數(shù)同名的方法)。使用 EventDispatchAction必須將 submit name屬性指定不同的值以區(qū)分每個 submit。而在 Struts2中將更容易實現(xiàn)這個功能。

當(dāng)然,我們也可以模擬 EventDispatchAction的方法通過 request獲得和處理參數(shù)信息。但這樣比較麻煩。在 Struts2中提供了另外一種方法,使得無需要配置可以在同一個 action類中執(zhí)行不同的方法(默認(rèn)執(zhí)行的是 execute方法)。使用這種方式也需要通過請求參來來指定要執(zhí)行的動作。請求參數(shù)名的格式為

action!method.action

注:由于 Struts2只需要參數(shù)名,因此,參數(shù)值是什么都可以。

下面我就給出一個實例程序來演示如何處理有多個 submit form

【第 1步】實現(xiàn)主頁面 (more_submit.jsp)

 

<% @ page language = " java "  import = " java.util.* "  pageEncoding = " GBK " %>
<% @ taglib prefix = " s "  uri = " /struts-tags "   %>
< html >
  
< head >
    
< title > My JSP 'hello.jsp' starting page </ title >
  
</ head >
  
  
< body >
    
< s:form  action ="submit.action"   >
        
< s:textfield  name ="msg"  label ="輸入內(nèi)容" />   
        
< s:submit  name ="save"  value ="保存"  align ="left"  method ="save" />
        
< s:submit  name ="print"  value ="打印"  align ="left"  method ="print"   />       
    
</ s:form >
  
</ body >
</ html >

more_submit.jsp中有兩個 submit:保存和打印。其中分別通過 method屬性指定了要調(diào)用的方法: save print。因此,在 Action類中必須要有 save print方法。

【第 2步】實現(xiàn) Action類( MoreSubmitAction

 

package  action;

import  javax.servlet.http. * ;

import  com.opensymphony.xwork2.ActionSupport;
import  org.apache.struts2.interceptor. * ;

public   class  MoreSubmitAction  extends  ActionSupport  implements  ServletRequestAware
{
    
private  String msg;
    
private  javax.servlet.http.HttpServletRequest request;
    
//  獲得HttpServletRequest對象
     public   void  setServletRequest(HttpServletRequest request)
    {
        
this .request  =  request;
    }
    
//  處理save submit按鈕的動作
     public  String save()  throws  Exception
    {
        request.setAttribute(
" result " " 成功保存[ "   +  msg  +   " ] " );
        
return   " save " ;
    }

    
//  處理print submit按鈕的動作
     public  String print()  throws  Exception
    {
        request.setAttribute(
" result " " 成功打印[ "   +  msg  +   " ] " );
        
return   " print " ;
    }
    
public  String getMsg()
    {
        
return  msg;
    }

    
public   void  setMsg(String msg)
    {
        
this .msg  =  msg;
    }
}

上面的代碼需要注意如下兩點:

save print方法必須存在,否則會拋出 java.lang.NoSuchMethodException異常。

Struts2 Action動作中的方法和 Struts1.x Action execute不同,只使用 Struts2 Action動作的 execute方法無法訪問 request對象,因此, Struts2 Action類需要實現(xiàn)一個 Struts2自帶的攔截器來獲得 request對象,攔截器如下:

org.apache.struts2.interceptor. ServletRequestAware

【第 3步】配置 Struts2 Action

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 >     
    
< package  name ="demo"  extends ="struts-default"   >
        
< action  name ="submit"   class ="action.MoreSubmitAction" >
            
< result  name ="save"   >
                /result.jsp
            
</ result >
            
< result  name ="print" >
                /result.jsp
            
</ result >
        
</ action >     
    
</ package >     
</ struts >

【第 4步】編寫結(jié)果頁( result.jsp

 

<% @ page pageEncoding = " GBK " %>
< html >
  
< head >
    
< title > 提交結(jié)果 </ title >
  
</ head >
  
< body >
    
< h1 > ${result} </ h1 >
  
</ body >
</ html >

result.jsp中將在 save print方法中寫到 request屬性中的執(zhí)行結(jié)果信息取出來,并輸出到客戶端。

啟動 Tomcat后,在 IE中執(zhí)行如下的 URL來測試程序:

    http://localhost:8080/moresubmit/more_submit.jsp

大家也可以直接使用如下的 URL來調(diào)用 save print方法:

調(diào)用 save方法: http://localhost:8080/moresubmit/submit!save.action

調(diào)用 print方法: http://localhost:8080/moresubmit/submit!print.action

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Struts2教程
一個Action內(nèi)包含多個請求處理方法的處理-JAYSON-搜狐博客
基于Struts的AJAX
struts入門
struts2學(xué)習(xí)筆記(6)——輸入校驗(2)
struts2動態(tài)方法調(diào)用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服