问题标签 [playframework-2.6]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Play Framework - ErrorHandler 没有被调用
在尝试在特定场景中使用HttpErrorHandler机制处理异常时,我在Play 框架(2.6)中遇到了一个问题。
我在根包中有一个简单的ErrorHandler :
我创建了一个自定义控制器来处理资产:
我检查了ErrorHandler并且在所有情况下都可以正常工作,除非在AssetsCustomController中从该方法引发异常:
例如,当抛出 IllegalArgumentException时,我的ErrorHandler被忽略,Play 使用他的本机错误处理程序。这是堆栈跟踪:
[解决方案]
感谢Flo354的回答,我能够解决问题,并且AssetsCustomController是这样的:
java - Where are the controller components?
I'm trying to move to compile-time dependency injection using Play Framework 2.6 in Java. My reading of the Play 2.6 Migration Guide under "Scala Controller Changes", leads me to believe that I should pass an instance of ControllerComponents
into my controller classes; but I can't find a method that provides those components.
play.api.BuiltInComponentsFromContext
defines a controllerComponents()
method, but the Java version of that class, play.BuiltInComponentsFromContext
, does not.
What is going on?
Under "Using Dependency Injection" in the Play 2.6 (Java) documentation, it talks about overriding javaHandlerComponents
in BuiltInComponents
. OK fine, but does that mean I have to define all of my actions as separate classes? Can I not use Controller classes if I want to do compile-time dependency injection in Java?
playframework - 播放登录未捕获 CSRF 令牌
我正在 Play 上进行一些简单的登录验证!2.6 框架 Web 应用程序,它似乎没有获取我在以下内容中包含的 CSRF 令牌view.loginForm
:
然后我的 conf.routes 通过以下方式处理 POST:
POST /login controllers.LoginRegController.attemptLogin
这是中的方法LoginRegController
:
一旦用户点击提交,它就会被带到框架的默认授权页面,我在控制台上看到它没有通过 CSRF 检查:
[警告] p.filters.CSRF - [CSRF] 检查失败,因为在标头中找不到令牌
我认为这里的答案中提到了一个类似的问题,即会话正在刷新,但我认为它会在请求本身中有令牌,通过测试,然后加载一个新会话。任何想法如何修复,或如何获取令牌并将其“插入”到 Controller 方法中的必要位置?
scala - Play Session 信息不会在请求中持续存在 - 隐含问题?
我不知道为什么,直到今天这才成为问题,而且我有一段时间没有更改此控制器中的任何代码,但我突然似乎无法在使用 Play 2.6 制作的应用程序中保存跨请求的信息。在我的 LoginController 中,当用户在表单中填写其凭据时,我会从 POST 请求中调用此方法:
我view.html.successLoginResponse
的负载如下:
但是当这个加载时,我在视图中的方法检索到的值是“未找到用户名”和“未找到身份验证”的“否则”结果
很明显,返回的 OK 请求没有存储信息,即使我确实将它们添加到
.withSession(request.session + ("authenticated" -> "true") + ("username" -> userName))
代码中的行。在今天之前,它会这样做并且不会将信息显示给我,但是在任何后续页面加载时,该请求将检索数据,并且我将能够获取用户名或身份验证检查。它是否抓住了顶部的隐式请求并将其加载到视图中?从第一次调用的请求的旧版本attemptLogin()
?如果是这样,我如何让它取而代之的是新的会话数据?
我试着做
就在Ok(...)
回应之前,但这并没有发生。
playframework - 迁移play framework 2.6带来java.lang.ClassNotFoundException: jdk.internal.misc.Unsafe
尝试迁移到新的播放版本 2.6.3 但在应用程序启动迁移后我有如下异常:
获得一些如何解决它的想法真的很棒。
angularjs - 玩!返回错误请求 400
我正在尝试通过播放将数据插入到 mongo 集合中。Play 控制器中的动作如下:
}
来自angularjs的http请求如下:
Play 的响应是“错误请求或无效 json”。然而,开发者工具中的请求正文显示 {"name":"test","location":"test"}
这段代码有什么问题。我对 AngularJs 和 Play 完全陌生!请帮忙。
regex - Scala Play:电子邮件正则表达式中的“@”符号无效
我正在尝试输入一个使用该pattern
属性的输入正则表达式,以确保^[a-zA-Z0-9_]{6,12}$
在我的 Scala Play 模板中输入有效的用户名(正则表达式中的部分)或电子邮件。使用 Play 模板时,@
用于指示 HTML 的中断和“Scala 到这里”,因此当我输入行并尝试包含电子邮件中使用的 @ 时。它抱怨:
'@' 符号无效
我试过了:
- 正常做
- 三引号,前面没有转义字符
@
- 前一个转义字符
@
前面的两个转义字符
@
(带和不带三引号)模式="^[a-zA-Z0-9_]{6,12}$|/^[a-zA-Z0-9.!#$%&'<em>+/=?^_`{|} ~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)$/"
模式="""^[a-zA-Z0-9_]{6,12}$|/^[a-zA-Z0-9.!#$%&'<em>+/=?^_`{ |}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)$/"""
模式=^[a-zA-Z0-9_]{6,12}$|/^[a-zA-Z0-9.!#$%&'<em>+/=?^_`{|}~ -]+\@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)$/"
模式="^[a-zA-Z0-9_]{6,12}$|/^[a-zA-Z0-9.!#$%&'<em>+/=?^_`{|} ~-]+\@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)$/"
有任何想法吗?
(编辑呃抱歉,所以不会显示包装在input
标签中的东西,它也不会让我将上面的内容格式化为代码,所以我不得不在我的原始帖子之后添加模式 =“...”而不格式化为这样,道歉。)
java - 在 Java 播放中使用异步 mongo 驱动程序
我正在使用 mongo DB 开始新的 Java Play 项目。我浏览了 Play!文档,但没有 mongo Java 异步驱动程序。仅提及 Scala 反应式驱动程序。SO有许多类似的问题,但它们都已经过时了。
现在以异步方式处理 mongo DB 的最佳方法是什么?
假设我只有一个带有订单的文档集合,我需要添加一个 OrderController 来返回来自 mongo 的所有订单。
java - 播放框架 2.6:NoClassDefFoundError:播放/缓存/DefaultCacheApi
我正在尝试将我的应用程序从 play 2.2.6 升级到 play 2.6.3,但我遇到了这个问题。
我已经阅读了@KdgDev和@NikolajPL问题的答案,听起来很相似,但到目前为止没有任何帮助。
我不确定这个问题的根源,但我认为它可能与 Redis DB 连接有关,因为它使用不同的缓存方法,并且从 play 2.5 开始默认 ehcahce 应该被禁用。
我的配置文件:
构建.sbt
插件.sbt
我正在使用 sbt 运行我的项目并获得以下堆栈跟踪:
scala - MacWire:找到多个类型的值
我正在使用 MacWire DI 框架,但出现此错误。
我的应用程序加载器是这样的:
在对代码进行少量修改后,我遇到了一些其他类似的错误。如何遵循 DI 依赖项来追踪这些错误?