用于Spring OncePerRequestFilter的web.xml中的init-param未设置

时间:2013-11-11 14:56:17

标签: spring servlets configuration filter web.xml

我有一个带有Spring 3.2.5的Spring MVC应用程序,它上面有一个过滤器,用于更改请求。这个过滤器有一个参数,我试图通过web.xml中的init-param设置。我似乎无法让web.xml在我的bean上设置值,并且无法弄清楚它在spring bean中的存储位置(如果它存在的话)。我没有将我的过滤器bean添加到我的上下文中,只添加到我的web.xml中。

我的web.xml:

<filter>
    <filter-name>myFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <description>
            ...
        </description>
        <param-name>allowMethods</param-name>
        <param-value>GET, POST</param-value>
    </init-param>
</filter>

我的过滤器代码:

公共类MyFilter扩展了OncePerRequestFilter {

private static final Logger logger = LoggerFactory.getLogger(MyFilter.class);

protected String allowMethods;


@Override
protected void doFilterInternal(HttpServletRequest request,
                                HttpServletResponse response, FilterChain filterChain)
        throws ServletException, IOException {
        // Do filter stuff, and try printing allowMethods via the logger
}

/**
 * @return the allowMethods
 */
public String getAllowMethods()
{
    return allowMethods;
}

/**
 * @param allowMethods the allowMethods to set as a comma separated list
 * for request types.  For example, "GET" or "GET, PUT", or "GET, PUT, POST, DELETE"
 */
public void setAllowMethods(String allowMethods)
{
    logger.info("Setting CORS filter to allow cross-site scripting with methods: {}", allowMethods);
    this.allowMethods = allowMethods;
}

}

我没有看到setter消息,该值没有存储在Spring保存的过滤器配置中,我无法覆盖任何看起来像他们会给我我想要的信息的方法(它们被声明为 final )。

如何将init-param映射到我的过滤器。我是否必须使用applicationContext来执行此操作?如果是这样,使用Spring执行此操作的惯例是什么?

由于

0 个答案:

没有答案