이 문제는 ModelDriven
및 Struts 2.3.16과 관련이 있습니다. 액션에 전달 된 액세스 매개 변수로 변경된 params
인터셉터의 동작은 ModelDriven
액션과 함께 사용할 acceptParamNames
목록을 구성해야합니다. acceptParamNames
목록이 비어 있으면 기본적으로 기본 패턴을 통해 매개 변수를 수락하여 작동합니다. 우리가Struts 2의 ModelDriven을 통한 매개 변수 전달
ModelDriven
작용이 있다고 가정 :
@Namespace("/modelDriven")
public class ModelDrivenAction extends ActionSupport implements ModelDriven {
private Gangster model = new Gangster();
private String name; //getter and setter
public Object getModel() {
return model;
}
@Actions({
@Action(value="modelDriven", [email protected](location = "/modelDriven/modelDriven.jsp")),
@Action(value="modelDrivenResult", [email protected](location = "/modelDriven/modelDrivenResult.jsp"))
})
public String execute() throws Exception {
model.setName(name);
return SUCCESS;
}
}
모델 :
public class Gangster {
private String name; //getter and setter
}
modelDriven.jsp :
<s:form id="modelDrivenForm" action="modelDrivenResult" method="POST" namespace="/modelDriven">
<s:textfield
label="Gangster Name"
name="[1].name"/>
<sj:submit cssClass="btn btn-primary" executeScripts="true" targets="div1"/>
</s:form>
<div id="div1"/>
modelDrivenResult.jsp : 액션 execute
방법 저희 params
인터셉터로 채워야 name
파라미터를 얻고, 그 결과에 표시 할 모델 속성을 초기화하는에서
<s:label
label="Gangster Name"
name="name"/><br/>
. 그러나 문제는 매개 변수가 채워지지 않는다는 것입니다. 매개 변수 name
을 params 인터셉터로 채우는 방법, 그래서 액션은 값을 표시 할 수 있습니까?
나는 struts-2.3.15.2에서 당신의 질문과 비슷한 것을 시도해 보았고 괜찮 았는데, acceptParamNames를 변경할 필요가 없었습니다. 이것은 2.3.16에 다만 새롭다 ??? –
'acceptParamNames'는 인터셉터를 통과하기 위해 이전 버전에서도 변경해야하지만, 새로운 버전에서는 매개 변수가 제외되면 영향을 미치지 않습니다. [Struts 2 Acceptable Parameters] (http://stackoverflow.com/a/20267397/573032) 및 [struts 2 setter getter가없는 액션] (http://stackoverflow.com/a/16604527/573032) –
@ SiddharthTrikha 이것이 2.3.15.x가 아니라는 것을 이해하지 못합니까? Struts 2.3.16 구현 및 동작이 다릅니다. –