下面是action元素的每一個屬性的做用描述:html
attribute在struts將JSP頁面的表單對象封裝成一個ActionForm對象後,會將這個ActionForm對象保存在request做用域中或者session做用域中,attribute屬性就是做爲key被存儲到做用域中。java
在JSP頁面能夠直接使用EL表達式去獲取ActionForm對象:apache
${requestScope.對象名.屬性}session
或者app
${sessionScope.對象名.屬性}jsp
這裏的對象名就是attribute屬性定義的值。ide
注意:當action元素中定義了name屬性後,attribute屬性的值將被忽略。this
若是當前action須要用到ActionForm時,name屬性是必須的,attribute屬性就是非必須的。spa
通常狀況下,attribute屬性值與name屬性值的值相同。orm
cancellable可 取的值爲:true,false,yes,no。在JSP頁面的表單中,<html:cancel />標籤容許退出當前Action,若是cancellable屬性值爲真(true,yes),則一切正常。若是cancellable屬性爲假 (false,no),則點擊cancel按鈕後發生org.apache.struts.action.InvalidCancelException異常。
默認爲false。
catalogThe name of a commons-chain catalog in which to look up a command to be executed as part of servicing this request. Only meaningful if "command" is also specified.
className某個實現ActionMapping類的子類的全路徑名(包括包名)。能夠自定義一個ActionMapping的子類。
默認爲<action>元素的父節點<action-mappings>的type屬性,若是未定義則默認爲org.apache.struts.action.ActionMapping。
commandThe name of a commons-chain command which should be looked up and executed as part of servicing this request.
extendsThe path of the ActionConfig that this object should inherit properties from.
forward某個servlet或者jsp頁面或者其餘資源的相對路徑。若是使用了forward屬性,則當前action被觸發時,會跳轉到forward屬性指定的資源,不會繼續進行處理,固然也會忽略type屬性。
<action path="/login" forward="/form/login.jsp" />
當 用戶訪問"/login.do"時,會forward到"/form/login.jsp"頁面,Struts內部會使用 RequestDispatcher.forward()方法。這是一個很好的隱藏JSP頁面的真實路徑方法。能夠將JSP頁面放在WEB-INF目錄 下,這樣只能經過"*.do"或者被Action調用的形式訪問。
include做用同forward屬性,能夠包含某個資源,內部是經過RequestDispatcher.include()方法實現。 一樣會忽略type屬性。
input當前action的提交頁面路徑(默認)或者其餘資源的相對路徑。使用ActionMapping.getInputForward()能夠返回input屬性指定的資源路徑。
當FormBean的驗證方法vaildate返回不爲null的ActionErrors時,將返回input屬性指定的路徑,若是沒有指定input屬性,將拋出異常(java.lang.IllegalArgumentException: The path of an ForwardConfig cannot be null)
當在action元素中定義了name屬性時,input屬性是必須定義的。
nameFormBean的name,應該與<form-bean>元素中的name屬性相同,這樣才能將FormBean與當前action綁定起來。
若是有了name屬性,則必須定義input屬性。
attribute屬性與name屬性相似,可是name是必須的,attribute不是必須的。
Action是經過name屬性去尋找本身的FormBean,而不是attribute屬性。
parameter此 屬性結合DispatchAction類使用。當parameter屬性值爲method,則訪問連接"/userAction?method=add" 時,在繼承了DispatchAction的Action類中會調用自定義的add方法。實現不一樣的操做,自動調用不一樣的業務處理方法。不用手動去寫if else代碼了。
具體,請參看《Struts1.X-DispatchAction類-根據請求參數實現業務分派》
path以"/"開頭,不帶文件擴展名的路徑,Struts根據path屬性來選擇相應的Action處理用戶的請求。好比當某個請求地址爲"show.do",則path屬性應該爲"/show",這樣才能找到合適的Action處理用戶的請求。
prefix指 定填充當前 Action 關聯 FormBean 時 ,要添加到請求參數名稱的前綴,所以,若是請求參數名爲 "username" 而且 prefix 屬性被設置爲 "search" ,則將對 FormBean 調用一個名爲 setSearchUsername() 的方法,只有指定了 name 屬性,本屬性纔有效
roles以逗號分割的一段role角色名,只有這些角色才能訪問當前Action,其餘用戶訪問後會拋出【org.apache.struts.chain.commands.UnauthorizedActionException】異常。
scopeFormBean的做用域,可取的值爲request和session,默認爲session。若是未定義name屬性,則這個屬性也就麼意義了。
suffix做用同prefix,suffix爲後綴,prefixx爲前綴。
type完整的類名,包括包名,此類應該是org.apache.struts.action.Action類的子類。若是定義了forward屬性或者include屬性,則type屬性被忽略。
unknown可取的值:true,false,yes,no。當爲真時(true,yes),當前這個Action將處理全部未找到相應處理Action的請求。只能有一個Action的unknown屬性爲真。默認爲false。
validate可取的值:true,false,yes,no。當爲真時(true,yes),在進入Action處理類前,是否調用ActionForm Bean的validate()方法對錶單數據進行驗證。默認爲true。