2014-07-21 1 views
2

일부 매개 변수를 사용하여 액션 클래스를 호출하려고하지만이 작업을 수행 할 수 있습니다. struts.xml 파일을 응용 프로그램에 매핑하여 매개 변수를 전달하라고 제안하십시오.Struts 2에서 액션 이름이 동적으로 매개 변수를 전달하는 방법

내 응용 프로그램에서 Struts2 프레임 워크를 사용하고 있습니다. 내 스트럿츠 파일 액션 매핑은 다음과 같습니다 : CreateSHBehaviourAction 클래스의 방법 여기 createSHBehaviour

http://localhost:8080/pro/createSHBehaviour/123 

:

public class CreateSHBehaviourAction extends ActionSupport implements 
    SessionAware,Parameterizable { 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

private SessionMap<String, Object> sessionMap = null; 
private Map<String, String> params = new HashMap<String, String>(); 

public String execute() { 
    System.out.println("param1 = " + this.params.get("param1")); 
    sessionMap = (SessionMap<String, Object>) ActionContext.getContext() 
      .getSession(); 
    sessionMap.put("idSoftHumanS", "hhhh"); 
    sessionMap.put("fix_behaviour_mode", true); 
    return Action.SUCCESS; 
} 

public void setSession(Map<String, Object> map) { 
    sessionMap = (SessionMap<String, Object>) map; 
} 

@Override 
public void addParam(String key, String value) { 
    // TODO Auto-generated method stub 
    this.params.put(key, value); 
} 

@Override 
public Map<String, String> getParams() { 
    // TODO Auto-generated method stub 
    return this.params; 
} 

@Override 
public void setParams(Map<String, String> params) { 
    // TODO Auto-generated method stub 
    this.params = params; 
    } 
    } 

내가 매우 시도하고 액션 클래스를 호출하는 데 사용

<action name="createSHBehaviour/*" class="sadagi.pro.action.CreateSHBehaviourAction" > 
<interceptor-ref name="accessRequired"/> 
<interceptor-ref name="scope" /> 
<param name="param1">{1}</param> 
<result name="success">views/createSHBehaviourView.jsp</result>    
<result name="login" type="redirect">/</result> 
</action> 

및 URL 오늘이 문제를 해결하기 위해 제게 제안 해주세요. 감사합니다.

답변

1

Parametrizable 대신 ParameterAware을 사용하거나 매개 변수를 동작 컨텍스트에서 직접 가져옵니다.

Map<String, Object[]> parameters = ActionContext.getContext().getParameters(); 
관련 문제