1

Spring 3.2.5 を使用した Spring MVC アプリには、リクエストを変更するフィルターがあります。このフィルターには、web.xml の init-param を介して設定しようとしているパラメーターがあります。Bean に値を設定するための web.xml を取得できないようです。また、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>

私のフィルターコード:

public class MyFilter extends 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;
}

}

セッターメッセージが表示されず、Spring が保存するフィルター構成に値が保存されず、必要な情報を提供するように見えるメソッドをオーバーライドできません (それらはfinalと宣言されています)。

フィルターにマップされた init-param を取得するにはどうすればよいですか。それを行うにはapplicationContextを使用する必要がありますか? もしそうなら、Springでこれを行うための規則は何ですか?

ありがとう

4

0 に答える 0