今天在做畢業設計時, 用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;}
}