为了控制动作接受的参数:
让您的动作实施ParameterNameAware
,如:
public class sample implements ParameterNameAware(){
public boolean acceptableParameterName(String parameterName) {
if (("amount".equals(parameterName) ||
"sourceAccount".equals(parameterName) ||
"destinationAccount".equals(parameterName))
return true;
else
return false;
}
}
为param
属性的排除属性调用此方法。
因此,您需要配置params
拦截器以排除所有参数,以便acceptableParameters
有机会被params
拦截器调用。
<interceptor-ref name="params">
<param name="excludeParams">\w+((\.\w+)|(\[\d+\])|(\(\d+\))|(\['\w+'\])|(\('\w+'\)))*</param>
</interceptor-ref>
我说错了吗?!这对我来说有点奇怪(不包括所有参数,然后在每个动作中添加它们)。
答案 0 :(得分:0)
Struts2 params
拦截器对接受或拒绝参数的行为可以通过ParameterNameAware
动作进行扩展。如果它们被接受或被忽略,则所有参数都由此拦截器处理。扩展点检查接受的参数。如果拦截器接受了它们,那么它们就会被传递,但是通过调用acceptableParameterName
来执行额外的检查,但是如果拦截器接受了参数,它就无用了。另一方面,如果拦截器排除了参数,则调用此方法会产生权力。共存两种方法看起来很奇怪,因为它们被设计为互斥。