Struts2中Action接收參數的方法


今天在做畢業設計時, 用easyUI的url 訪問不到后台Action   url:‘chance!addChance.aciton’

查了到原因 因為,struts2 的Action 方法不能帶參數。

so 百度了一下,但是還是不理解。

引用原文如下,

Struts2中Action接收參數的方法主要有以下三種:
1.使用Action的屬性接收參數:
    a.定義:在Action類 中定義屬性,創建get和set方法;
    b.接收:通過屬性接收參數,如:userName;
    c.發送:使用屬性名傳遞參 數,如:user1!add?userName=Magci;
2.使用DomainModel接收參數:
    a.定義:定義 Model類,在Action中定義Model類的對象(不需要new),創建該對象的get和set方法;
    b.接收:通過對象的屬性接 收參數,如:user.getUserName();
    c.發送:使用對象的屬性傳遞參數, 如:user2!add?user.userName=MGC;
3.使用ModelDriven接收參數:
    a.定 義:Action實現ModelDriven泛型接口,定義Model類的對象(必須new),通過getModel方法返回該對象;
    b. 接收:通過對象的屬性接收參數,如:user.getUserName();
    c.發送:直接使用屬性名傳遞參數, 如:user2!add?userName=MGC;

1.Servlet API解藕方式:

Struts2分別對Request、Session和Application三個對象封裝成了三個Map對象,直接使用封裝好的Map對象來讀取和保存數據。可以通過com.opensymphony.xwork2.ActionContext類來得到這三個對象。ActionContext是Action執行的上下文,保存了很多對象如parameters、request、session、application和locale等。通過ActionContext類獲取Map對象的方法為:

ActionContext context=ActionContext.getContext(); --得到Action執行的上下文

Map request=(Map)context.get("request");--得到HttpServletRequest的Map對象 

Map session=context.getSession();--得到HttpSession的Map對象

Map application=context.getApplication();--得到ServletContext的Map對象

除了利用ActionContext來獲取request、session和application對象這種方式外,Action類還可以實現某些特定的接口,讓Struts 2框架在運行時向Action實例注入request、session和application對象。這種方式也就是IOC方式,與之對應的三個接口和它們的方法如下所示:

public class SampleAction implements Action, 
RequestAware, SessionAware, ApplicationAware

private Map request;
private Map session;
private Map application;

@Override
public void setRequest(Map request)
{this.request = request;}

@Override
public void setSession(Map session)
{this.session = session;}

@Override
public void setApplication(Map application)
{this.application = application;}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM