struts1配置文件中action的常用屬性

  首先列舉action的屬性代碼如下:
<action path="URL"
    type="ActionClass"
    name="userForm"
    scope="request"
    attribute="key"
    input="/register.jsp"
    forward="/index.jsp"
    include="/index.jsp"
    unknown="true"
    parameter="test"
    className="mappingclass"
    validate="true">
    <forward name="" path=""></forward>
</action>
下面對其屬性解析:
    path:代表請求的Action的名稱,無需指明後綴struts1自動處理
<form action="${pageContext.request.contextPath}/Register.do" method="post">....</form>
當其點擊此提交時後綴名稱爲.do,(由於我們在會web.xml配置*.do的處理),所以經過mapping的地址映射,交給ActionServlet按照struts1的處理流程處理提交Action的請求。
    type:代表請求的Action交給哪個Action處理注意此類的名稱一定是類的全名稱(包括包名)。
    name:代表的是請求參數封裝的ActionForm的名稱。
    備註:此名稱與<form-beans><form-bean name="名稱Form" type="Form類的全名"></form-bean></form-beans>中"名稱Form"一致,並通過此form-bean中的type來指定封裝的ActionForm類。
    scope:代表把formbean的參數封裝到那個作用域中默認的作用域爲session。
    備註:當我們沒有指定formbean的作用域時,在type指定的Action類中還可以通過以下代碼獲取:
UserForm userForm = (UserForm) form;
/**
* 由於在Action的屬性配置中的scope屬性指定了userForm的作用域, 當採用的是默認值(session)時,
* 也可以直接從作用域中獲取代碼如下:UserForm userForm = 
*(UserForm)request.getSession().getAttribute("userForm");
*/
/**備註:由於在開發中爲了節省ActionForm佔用的內存空間,一般採用scope=”request”配置,因此也可以採用一下的方式獲取*/
UserForm userForm = (UserForm) request.getAttribute("userForm");
 
注意:若aciton的配置中沒有配置attribute="key" 屬性時,在Action中獲取的關鍵字採用默認的值及name的名稱,當配置了attribute="key"屬性時,必須通過"key"獲取。
    attribute:指定formbean存儲的key,不設默認爲name屬性的值。
舉例:如果在action的配置中配置了attribute=”uform”,在Action中獲取的方式應該爲:
/** 通過方法參數中傳遞的ActionForm獲取ActionForm中的對象並強制造型爲UserForm */
UserForm userForm = (UserForm) form;
/**由於在action的配置中指明瞭attribute的屬性及屬性值,因此應該採用以下方式獲取*/
UserForm userForm = (UserForm) request.getAttribute("uform");
    input="/register.jsp" 指定formbean的數據是由哪個頁面提供的。
說明:提供此屬性的目的在於formbean校驗失敗時,程序方便跳回formbean的輸入頁面,通過struts1錯誤信息標籤,顯示校驗失敗信息。
forward="/index.jsp" 指定收到請求時,跳轉到相應的jsp頁面。
強調:如果配置了此屬性,則action將不再被調用,即接受到此action時,直接調至到index.jsp頁面。
include="/index.jsp" 定收到請求時,進行頁面包含。
unknown="true" 如果action把該屬性設置爲true,則它可以處理客戶機發出的所有無效的.do請求,默認值爲false。
舉例:如果在配置文件中添加如下的action配置,<action path="/**" forward="/index.jsp"                                                                     unknown="true"/>,當如果在地址欄中發出請求爲:http://localhost:8080/20110105struts1_2/regi.do
如果在此配置文件中找不到regi.do的Action就會處理上面配置的action直接跳轉到index.jsp頁面 (備註:與此action中path名稱無關,但必須配置一個path屬性)。
    parameter="test" 配置action參數,調用actioMapping.getParameter方法可以獲得這裏配置的參數。
    className="mappingclass" <action>標籤和所有的配置信息使用哪個對象封裝,默認值爲ActionMapping對象。
    validate="true" 請求參數封裝到formbean中後,是否讓struts自動調用formbeanvalidate方法進行數據校驗,默認true。
    forward標籤
    在action配置中,還有一些其他的標籤配置,<forward name="" path=""></forward>即在處理完此action之後可以在Action中的execute方法中通過此標籤的name屬性獲取此action,並跳轉到相應的path地址中。
    舉例:如果在action內部我們配置了forward標籤的代碼如下:
<forward name="message" path="/message.jsp"></forward>
那麼可以再Action返回值中做如下處理:
/** 獲取跳轉的地址並返回ActionForward */
    return mapping.findForward("message");
通過以上配置,在處理完此action後,struts1經過處理後就會跳轉到/message.jsp視圖層。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章