Play Framework 2.5.12-在application.conf中设置多个过滤器

时间:2018-10-13 13:00:10

标签: filter playframework-2.5

我正在使用Play Framework 2.5.12(Java版)。 当我声明一个过滤器(Filters1)并在application.conf中的config下设置时:

 play.http.filters = my.filter.path.Filters1

它工作正常。

但是我有两个过滤器:

  1. Filters1扩展了DefaultHttpFilters类
  2. Filters2扩展了Filter类

在Play Framework 2.6中,解决方案是:

play.http.filters += my.filter.path.Filters1
play.http.filters += my.filter.path.Filters2

我已经尝试过了,但是在Play Framework 2.5中不起作用。 您有什么解决办法?

1 个答案:

答案 0 :(得分:2)

最后,我无法在application.conf中处理此问题。
解决方案:
您必须将过滤器作为参数传递给Filters1的构造函数,并将其设置为EssentialFilters。
这是我的Filters1类别:

A = (30.1:0.1:30.5)';
I = (324:328)';
Angle = (35:5:55)';
FWHM = (0.2:0.05:0.4)';
d = table(A,I,Angle,FWHM);
t1 = d.A + d.I;
t2 = d{:,1} + d{:,2};

和Filters2类:

import com.rh.ot.web.core.filters.CustomFilter;
import play.Environment;
import play.filters.gzip.GzipFilter;
import play.filters.headers.SecurityHeadersFilter;
import play.http.DefaultHttpFilters;
import play.mvc.EssentialFilter;
import javax.inject.Inject;
import javax.inject.Singleton;

@Singleton
public class Filters1 extends DefaultHttpFilters {

    private final Environment env;
    private EssentialFilter[] filters;

    @Inject
    public Filters(Environment env, GzipFilter gzipFilter, SecurityHeadersFilter securityHeadersFilter, Filters2 filters2) {
        super(securityHeadersFilter);
        this.env = env;
        filters = new EssentialFilter[]{gzipFilter.asJava(), filters2.asJava()};
    }

    public EssentialFilter[] filters() {
        return filters;
    }
}