2016-03-30 73 views
2

我試圖從2.4遷移到2.5。我在過濾代碼中遇到問題。下面是我的濾波器代碼播放2.5過濾器

public class Filters implements HttpFilters { 

    private final SecurityFilter securityFilter; 

    @Inject 
    public Filters(SecurityFilter securityFilter) { 
     this.securityFilter = securityFilter; 
    } 

    @Override 
    public EssentialFilter[] filters() { 
     return new EssentialFilter[] {securityFilter.asJava()}; 
    } 
} 

根據文檔https://www.playframework.com/documentation/2.5.x/JavaHttpFilters

asJava()方法是可用的,並且在eclipse用2.5罐完全編譯。但是,當我運行激活程序ui或激活程序dist時,上面的代碼失敗。

我已經更新了plugins.sbt下面 addSbtPlugin( 「com.typesafe.play」 % 「SBT-插件」 % 「2.5.1」)

但它仍然失敗。還應該改變什麼?或者是否有任何其他配置需要更改?

+1

你得到什麼錯誤? – Seroney

+0

我收到錯誤說,Java()不是一個有效的方法! – Guruprasad

+0

從哪裏導入'SecurityFilter'?它是一個Scala過濾器嗎? – marcospereira

回答

0

時,即時通訊我的應用程序遷移從2.4到2.5,我有同樣的問題,我解決了這個辦法:

我的過濾器的代碼更改爲:

import play.filters.cors.CORSFilter; 
import play.http.DefaultHttpFilters; 

import javax.inject.Inject; 

public class Filters extends DefaultHttpFilters { 

@Inject public Filters(CORSFilter corsFilter) { 
    super(corsFilter); 
} 

,並按照文件的步驟:Enabling the CORS filter

添加在build.sbt

libraryDependencies + = 過濾

並配置CORS在application.conf:

filters{ 
# CORS filter configuration 
cors { 

    # The path prefixes to filter. 
    pathPrefixes = ["/json/rest/api"] 

    # The allowed origins. If null, all origins are allowed. 
    allowedOrigins = null 

    # The allowed HTTP methods. If null, all methods are allowed 
    allowedHttpMethods = ["POST","GET"] 

    # The allowed HTTP headers. If null, all headers are allowed. 
    allowedHttpHeaders = null 

    # The exposed headers 
    exposedHeaders = [] 

    # Whether to support credentials 
    supportsCredentials = true 

    # The maximum amount of time the CORS meta data should be cached by the client 
    preflightMaxAge = 1 hour 
} 

隨意問任何問題。