该问题与ModelDriven和Struts 2.3.16有关.由于params拦截器的行为更改为访问传递给操作的参数,因此需要配置acceptParamNames列表以与ModelDriven操作一起使用.如果acceptParamNames列表为空,则默认情况下通过默认模式接受params.假设我们有一个
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:
label="Gangster Name"
name="[1].name"/>
modelDrivenResult.jsp:
label="Gangster Name"
name="name"/>
在动作执行方法中,我们获取参数名称,该名称应由params拦截器填充并初始化model属性以在结果中显示它.但问题是参数未填充.如何获取参数名称由params拦截器填充,所以动作可以显示值?