Проблема связана с ModelDriven
и Struts 2.3.16. Поскольку поведение перехватчика params
изменилось на параметры доступа, переданные действию, необходимо настроить список acceptParamNames
для использования с действием ModelDriven
. Если список acceptParamNames
пуст, он работает по умолчанию, принимая параметры по шаблону по умолчанию. Предположим, у нас есть
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", results=@Result(location = "/modelDriven/modelDriven.jsp")),
@Action(value="modelDrivenResult", results=@Result(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:
<s:label
label="Gangster Name"
name="name"/><br/>
В методе действия execute
мы получаем параметр name
, который должен быть заполнен перехватчиком params
, и инициализируем свойство модели, чтобы отобразить его в результате. Но проблема в том, что параметр не заполнен. Как получить параметр name
, заполняемый перехватчиком params, чтобы действие могло отображать значение?