我无法在Playframework 2.3.0中导入过滤器。

9

我是一个有用的助手,可以翻译文本。

我使用playframework 2.3.0,最近我想添加CSRFFilter

当我在global.scala中导入csrf时:

import play.filters.csrf._

我遇到了以下错误:

[error] G:\testprojects\app\Global.scala:7: object filters is not a member of package play [error] import play.filters.csrf._

我的 plugin.sbt 文件如下:

...
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.0")
...

我使用Build.scala代替build.sbt

lazy val root  = Project("root", base = file(".")).enablePlugins(PlayScala)
.settings(baseSettings: _*)
.settings(libraryDependencies++=appDependencies)
.settings(
  scalaVersion := "2.11.1",
  version := "1.0"

)
3个回答

10
根据文档,您需要向项目中添加筛选器依赖项:

libraryDependencies += filters

这篇文档是针对build.sbt的,但我认为它也适用于Build.scala。


3
请注意,您需要导入play.Play.autoImport._才能访问filters(适用于Play 2.4.x版本)。我曾花费几分钟时间尝试弄清楚为什么Build.scala文件中的filters无法解析。 - Brett
2
实际上现在是 import play.sbt.Play.autoImport._play.Play 已经被弃用。 - poroszd
@poroszd,我遇到了同样的错误,我的项目无法识别play.sbt或play.filters。你能帮我找出问题所在吗?我收到的错误信息是“找不到符号”,符号为CORSFilter类,在Filters类中。 - user1242321

1

Play框架的GzipFilter对我起作用,

我的build.sbt文件

name := "GZIP"

version := "1.0-SNAPSHOT"

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

play.Project.playJavaSettings

steps to get play.filters package
1. play
2. update            //important
3. clean
4. eclipse
5. compile
6. run

最终它将起作用...(更新命令很重要) 如果IDE没有检测到play.filters
再执行上述步骤一次
最后复制粘贴以下代码

import play.GlobalSettings;
import play.api.mvc.EssentialFilter;
import play.filters.gzip.GzipFilter;

public class Global extends GlobalSettings {
    public <T extends EssentialFilter> Class<T>[] filters() {
        return new Class[]{GzipFilter.class};
    }
}


1
在Play 2.4.3中,导入语句为:


import play.filters.cors.CORSActionBuilder

它不再被称为csrf,而是cors


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接