Action呼叫字首詳解

zhanglei14616發表於2008-08-17
org.apache.struts2.dispatcher.mapper.DefaultActionMapper類在建立ActionMapping時,為協助請求傳送提供了四種不同的字首,這些字首使得使用者在傳送請求的時候更加機動和靈活,包括:
Method字首 Action字首 Redirect字首 Redirect-action字首

這些字首必須和struts2自帶的自定義標籤一起使用,struts2自定義標籤的描述檔案(tld)在struts2-core-版本號.jar包的META-INF目錄下,複製到工程的WEB-INF目錄中 然後在jsp頁面中新增下面程式碼移用:

<%@ taglib uri=”/WEB-INF/struts-tags.tld” prefix=”s” %>

1、Method字首

Method字首用於指定呼叫Action的哪個方法,格式如下:<s:submit name=”method:方法名稱” />。在Action中如果定義了多個方法,除了可以通過上一章講到的配置struts.xml指定要呼叫的方法以外,直接在檢視層指定也是一個不錯的選擇,但是,在配置檔案中指定具有更好的維護性

我們在StrutsAction 類中仍然有兩個方法insertStudent 和updateStudent

使用Method字首可以這樣配置:

struts.xml中 配置name class屬性 即可(這裡沒有太大區別,主要是檢視層的變化)

在jsp頁面中需要使用struts2自帶標籤如下:

<s:form action=”strutsAction “>

<s:submit name=”method:insertStudent ” value=”提交”></s:submit>

<s:submit name=”method:updateStudent” value=”提交”></s:submit>

</s:form>

通過<s:form action=” strutsAction ” />指定要呼叫的Action,在<s:submit/>標籤中,設定name屬性,第一個按鈕呼叫insertStudent ()方法,第二個按鈕呼叫updateStudent()方法

當我們檢視生成的html原始碼時我們發現多了一些表格佈局,在struts2中為標籤使用了預設的主題方式為排版帶來方便

我們也可以取消預設的設定<s:form action=”methodPrefixAction” theme=”simple”>可以替換預設主題

2、Action字首

Action字首可以改變表單的提交行為。<form>的action屬性決定了請求的目的地,一般是不會更改的,但是,Action字首可以做到。如果一個表單有多個提交按鈕,Action字首很有用。當然,用javascript也可以實現相同的效果。Action字首同樣定義在<s:submit>的name屬性中,格式為:action:Action的配置名稱

這裡我們舉個例子 有兩個Action類Action1 和Action2對應的是兩個行為Action1對應的是註冊;Action2對應的是登陸。 在struts.xml檔案中的name分別為action1 和action2

在jsp頁面中的表單如下:

<s:form theme=”simple” action=”action1″>

使用者名稱:<s:textfield name=”user.username”></s:textfield><br>

密碼:<s:password name=”user.password”></s:password><br>

<s:submit value=”註冊”></s:submit>

<s:submit name=”action:action2″ value=”登陸”></s:submit>

</s:form>

這樣我們實現了一個表單多個提交按鈕的操作 注意:Action字首 是針對兩個Action類的行為(如果有不對還望斧批)

3、Redirect字首 和 Redirect-action字首

Redirect字首和Redirect-action字首分別用於將請求重定向到URL或Action。從內部實現看,Redirect字首通過org.apache.struts2.dispatcher.ServletRedirectResult類重定向URL,而Redirect-action字首則通過org.apache.struts2.dispatcher.ServletActionRedirectResult類重定向Action.

Redirect字首的格式為:<s:submit name=”redirect:url”></s:submit>

Redirect-action字首的格式為:<s:submit name=”redirect-action:action-name”></s:submit>

這裡的例子並不是侷限於使用<s:submit>標籤 Redirect字首 和 Redirect-action字首 不提交表單 只做頁面重定向

相關文章