编辑:我正在使用Play!1.2版(生产版)
我想测试由安全模块类保护的控制器操作,因此我需要在测试我的控制器之前登录(否则我将被重定向到登录页面).
我在调用安全操作之前尝试登录.这是我的FunctionalTest的样子:
@Test
public void someTestOfASecuredAction() {
Map<String, String> loginUserParams = new HashMap<String, String>();
loginUserParams.put("username", "admin");
loginUserParams.put("password", "admin");
// Login here so the following request will be authenticated:
Response response = POST("/login", loginUserParams);
// The following is an action that requires an authenticated user:
Map<String, String> params;
params.put("someparam", "somevalue");
response = POST("/some/secured/action", params);
assertIsOk(response); // this always fails because it is a 302 redirecting to /login
}
Run Code Online (Sandbox Code Playgroud)
单步执行代码,我已经验证登录帖子是否有效 - 它会导致重定向响应,并将位置设置为主页(表示登录成功).
但随后在随后的安全行动调用中,我总是被重定向到"/ login"页面 - 表明我之前的登录没有坚持第二个POST请求.
查看FunctionalTest的源代码,我看到有一个@Before拦截器可以清除所有cookie.我尝试在我自己的中间超类中覆盖此截取(以保留cookie),但这也不起作用.
编辑:我把play.mvc.Before拦截器与org.junit.Before混淆了 - …
这是我在这里问的第一个问题,所以请友善......
在我的 PO 文件中,我有一个包含美元符号的本地化字符串。我无法逃脱美元符号(以避免 gettext 尝试美元替代)并获得所需的结果。一个 PO 条目示例来阐明我想要做什么:
msgid "myStringId"
msgstr "My string that contains a $ sign"
gettext 在 msgtr 中的 $ 上抛出。我尝试使用以下方法进行转义:
msgstr "My string that contains a \$ sign"
msgstr "My string that contains a $$ sign"
msgstr "My string that contains a '$' sign"
...没有成功。第三种方法(单引号)最接近,但返回美元符号和单引号。
返回 =>My string that contains a '$' sign
所需 =>My string that contains a $ sign
我的问题又来了:如何在 gettext PO 条目中转义美元符号?
提前致谢。
我正在尝试使用SBT版本0.13.5在项目中启用自定义AutoPlugin.当我尝试在我的build.sbt通道中启用插件时:
val aProject = project.in(file("foo")).enablePlugins(MyAutoPlugin)
Run Code Online (Sandbox Code Playgroud)
尝试从命令行启动SBT时出现以下错误:
value enablePlugins is not a member of sbt.Project
... (big stack trace) ...
[error] sbt.compiler.EvalException: Type error in expression
[error] Use 'last' for the full log.
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?
Run Code Online (Sandbox Code Playgroud)
当我查看sbt.Project的源代码时,我看到它enablePlugins 已定义.这里发生了什么?
编辑:当我删除调用时,enablePlugins我可以成功启动SBT会话.运行> about确认SBT版本为0.13.5.
编辑3:我发现当我使用格式为"2014.06.26-1-SNAPSHOT"的版本向Sonatype发布插件时,SBT无法加载上述错误.但是,如果我将格式更改为在"-1"之后包含单个字母,则SBT加载.因此这个版本格式有效:"2014.06.26-1a-SNAPSHOT".我发现这是因为我发现解析到本地发布的插件似乎工作正常(除了一个从未工作过的插件),而解析发布到Sonatype的完全相同的插件导致错误.当我在本地发布时,我总是在该版本中添加一封信.
编辑2:SBT日志的完整输出:
[info] Loading global plugins from /Users/markschaake/.sbt/0.13/plugins
[debug]
[debug] Initial source changes:
[debug] removed:Set()
[debug] added: Set()
[debug] modified: Set()
[debug] Removed products: Set() …Run Code Online (Sandbox Code Playgroud)