表单是通过 Ajax 请求提交的,表单中的所有参数都带有一个随机数前缀。前任:
123456567_name, 123456567_age(编号123456567是动态的)
我想将这些参数映射到名称和年龄的操作字段。
有没有办法告诉 struts2 这样做?
表单是通过 Ajax 请求提交的,表单中的所有参数都带有一个随机数前缀。前任:
123456567_name, 123456567_age(编号123456567是动态的)
我想将这些参数映射到名称和年龄的操作字段。
有没有办法告诉 struts2 这样做?
普通参数注入功能由ParametersInterceptor拦截器提供。我不知道您可以配置此拦截器以实现您需要的行为的任何方式,但您始终可以选择扩展拦截器。
因此,您可以通过扩展 ParametersInterceptor 类来创建自己的拦截器。这是一个如何做到这一点的示例:
import java.util.HashMap;
import java.util.Map;
import com.opensymphony.xwork2.interceptor.ParametersInterceptor;
import com.opensymphony.xwork2.util.ValueStack;
/**
* WARNING: Untested code !
*/
public class CustomParameterInterceptor extends ParametersInterceptor{
private static final long serialVersionUID = -3673037400195648706L;
@Override
protected void setParameters(Object action, ValueStack stack, final Map<String, Object> parameters) {
super.setParameters(action, stack, getRealParamMap(parameters));
}
protected Map<String, Object> getRealParamMap(Map<String, Object> parameters) {
Map<String, Object> result = new HashMap<String, Object>();
for (Map.Entry<String, Object> e : parameters.entrySet()) {
result.put(e.getKey().split("_")[1], e.getValue());
}
return result;
}
}
如果您打算使用它,您可能应该用更强大的方法替换我的 getRealParamMap 方法。