gpt4 book ai didi

java - 我必须为 Play Framework Filters 导入哪个包

转载 作者:行者123 更新时间:2023-11-30 06:47:15 26 4
gpt4 key购买 nike

我必须导入哪些包才能从 playframework docu get run 获取此代码。

import java.util.concurrent.CompletionStage;
import java.util.function.Function;
import javax.inject.Inject;
import akka.stream.Materializer;
import play.mvc.*;

public class GlobalHeaders extends Filter {

@Inject
public GlobalHeaders(Materializer mat) {
super(mat);
}

@Override
public CompletionStage<Result> apply(Function<Http.RequestHeader, CompletionStage<Result>> nextFilter,Http.RequestHeader requestHeader) {

return nextFilter.apply(requestHeader).thenApply(result -> {
return result.setHeader("Access-Control-Allow-Origin", "*")
.setHeader("Allow", "*")
.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS")
.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent");
});
}
}

错误是扩展过滤器说找不到符号过滤器

enter image description here

构建.sbt

scalaVersion := "2.11.7"

libraryDependencies ++= Seq( javaJdbc , cache , javaWs, filters)

libraryDependencies += "com.typesafe.akka" %% "akka-stream" % "2.4.2"

libraryDependencies += "com.typesafe.play" % "filters-helpers_2.11" % "2.4.2"

libraryDependencies += "com.google.code.gson" % "gson" % "2.8.0"

unmanagedResourceDirectories in Test <+= baseDirectory ( _ /"target/web/public/test" )

resolvers += "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases"

最佳答案

看起来它一定是来自 mvc 包的过滤器:

import play.mvc.Filter;

您的代码有import play.mvc.*;,所以

Error is that the extends Filter sais cannot find Symbol Filter

不得出现。

修复

您需要将 setHeader 更改为 withHeader:

import java.util.concurrent.CompletionStage;
import java.util.function.Function;
import javax.inject.Inject;
import akka.stream.Materializer;
import play.mvc.*;


public class GlobalHeaders extends Filter {

@Inject
public GlobalHeaders(Materializer mat) {
super(mat);
}

@Override
public CompletionStage<Result> apply(Function<Http.RequestHeader, CompletionStage<Result>> nextFilter,Http.RequestHeader requestHeader) {

return nextFilter.apply(requestHeader).thenApply(result -> {
return result.withHeader("Access-Control-Allow-Origin", "*")
.withHeader("Allow", "*")
.withHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS")
.withHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent");
});
}
}

库修复

如果您使用Play作为第3方库,那么您需要添加过滤器作为依赖项,例如:

Maven:

<!-- https://mvnrepository.com/artifact/com.typesafe.play/filters-helpers_2.11 -->
<dependency>
<groupId>com.typesafe.play</groupId>
<artifactId>filters-helpers_2.11</artifactId>
<version>2.5.14</version>
</dependency>

SBT:

// https://mvnrepository.com/artifact/com.typesafe.play/filters-helpers_2.11
libraryDependencies += "com.typesafe.play" % "filters-helpers_2.11" % "2.5.14"

标准安装

如果您使用标准 Play 安装,请勿将 filters 包含到 build.sbtlibraryDependencies 中。 Play 已经有了它,因此再次添加它会产生冲突。

Play 文档没有说添加过滤器作为依赖项: https://www.playframework.com/documentation/2.5.x/ScalaHttpFilters

关于java - 我必须为 Play Framework Filters 导入哪个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43489148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com