Struts 2可接受参数的名称

时间:2013-11-27 22:18:14

标签: java configuration parameters struts2 interceptor

为了控制动作接受的参数:

让您的动作实施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>

我说错了吗?!这对我来说有点奇怪(不包括所有参数,然后在每个动作中添加它们)。

1 个答案:

答案 0 :(得分:0)

Struts2 params拦截器对接受或拒绝参数的行为可以通过ParameterNameAware动作进行扩展。如果它们被接受或被忽略,则所有参数都由此拦截器处理。扩展点检查接受的参数。如果拦截器接受了它们,那么它们就会被传递,但是通过调用acceptableParameterName来执行额外的检查,但是如果拦截器接受了参数,它就无用了。另一方面,如果拦截器排除了参数,则调用此方法会产生权力。共存两种方法看起来很奇怪,因为它们被设计为互斥。