Tag: playframework 2.1

play framework 2.1.3扩展play.api.templates.Html

只是想知道是否可能,如果是的话,扩展play.api.templates.Html类有多难。 import java.lang.StringBuilder; public class MyHtml extends play.api.templates.Html { } 给我错误: error: constructor Html in class Html cannot be applied to given types; 这给出了相同的: public class MyHtml extends play.api.templates.Html { String text; public MyHtml(String text) { this.text = text; } } 谢谢

如何使用相同的参数名发送请求参数

这个问题是如何在Play 2.1 Java中为WS.post()设置params的扩展 我的Web服务请求处理程序如下 @POST @Path(“/requestPath”) public String addChallengersToLeague( @FormParam(“name”) String name, @FormParam(“values”) List values); 由于WSRequestHolder在setQueryParameter方法中接受Map , setQueryParameter我无法发送具有相同名称的参数列表。 我可以发送POSTMAN的请求,其中有多个参数名称为’values’,并且工作正常。 你能建议如何使用游戏来做同样的事情吗? 我正在使用游戏2.1.3 提前致谢。

更新任务模型 – RuntimeException:DataSource用户是否为空?

我今天开始学习Play框架,它非常好且易于学习。 我成功完成了他们网站上提供的示例,但我想对其进行一些修改。 我想看看是否可以更新特定任务的标签,所以我遵循以下方法 首先,我添加了一条更新数据的路径 POST /tasks/:id/update controllers.Application.updateTask(id: Long) 然后我将以下代码添加到index.scala.html文件中 @form(routes.Application.updateTask(task.id)) { Update note here: @inputText(taskForm(“label”)) } 然后我修改了Application.java类 public static Result updateTask(Long id) { Form taskForm = Form.form(Task.class).bindFromRequest(); if (taskForm.hasErrors()) { return badRequest(views.html.index.render(Task.all(), taskForm)); } else { Task.update(id, taskForm.get()); return redirect(routes.Application.tasks()); } } 最后在Task.java中我添加了这段代码 public static void update(Long id, Task task) { find.ref(id).update(task.label); } 但是当我执行更新操作时,我收到此错误 [RuntimeException:DataSource用户为空?] […]

用假会话测试控制器

我想为我的控制器编写测试: Result changeAction = callAction(controllers.routes.ref.Users.changePassword()); assertThat(status(changeAction)).isEqualTo(OK); 我有一个http状态代码 – 300。 这是正确的,因为我有一个名为Secured的类 package controllers; import play.mvc.*; import play.mvc.Http.*; public class Secured extends Security.Authenticator { @Override public String getUsername(Context ctx) { return ctx.session().get(“userId”); } @Override public Result onUnauthorized(Context ctx) { return redirect(routes.Users.login(ctx.request().uri())); } } 当我对控制器方法使用@Security.Authenticated(Secured.class)注释时,如果不存在与“userId”的会话,则重定向。 所以问题是,我怎么能假装会话? 我试过显然叫Controller.session(“usderId”, “2”); 并得到一个例外: java.lang.RuntimeException: There is no HTTP Context available from here. […]

播放2.0 / 2.1 for Java和dependency injection

我们有一个新的Play 2.0项目,我们计划在添加一些复杂的第三方集成代码时引入DI。 有一个适用于Play 2.0的Guice插件,但看起来它在2.1时已经过时了,我有一种预感2.1不再那么远了。 https://github.com/typesafehub/play-plugins/tree/master/guice Guice是Play 2.0 / 2.1的安全赌注,还是我们应该考虑其他选择?

Play Framework 2.1(Java)eBean @Encrypted Annotation Errors

我正在尝试在字符串字段上为数据库模型使用eBean @Encrypted批注。 文档使它看起来很简单,但是我在浏览器中使用内置的H2内存数据库获得了一个非常模糊的运行时错误: package models; import java.util.*; import javax.persistence.*; import play.db.ebean.*; import play.db.ebean.Model.Finder; import play.data.format.*; import play.data.validation.*; import com.avaje.ebean.*; import com.avaje.ebean.annotation.*; @Entity public class Test extends Model { @Id public Long id; @Encrypted public String identifier; } 生成与@Encrypted批注相关的以下运行时错误: Unexpected exception RuntimeException: Error reading annotations for models.Test No source available, here is the exception stack trace: […]

我可以从任意异步任务访问Http.Context.current()吗?

我正在为移动应用程序的后端工作,该应用程序目前正在Play 2.1.1上运行。 作为处理某些请求的一部分,我们发送推送通知。 发送推送通知的下游请求应完全异步,并与移动客户端的始发请求 – 响应分离。 我想在发送下游请求时访问Http.Context.current()以访问我们在请求标头中传递的一些跟踪信息。 最初,代码看起来像这样,遵循Play中的建议! 文件 : PushNotificationRunnable sendNotificationTask = new … Akka.system().scheduler().scheduleOnce(Duration.apply(0, TimeUnit.MICROSECONDS), sendNotificationTask, Akka.system().dispatcher()); 探索play.libs.Akka帮助器引导我进入future方法,该方法采用可调用方式并返回Promise。 这个承诺允许我链接更多的代码。 在这里,我已经链接了一个Callback ,它可以访问Http.Context.current(),这要归功于Play的PromiseActor类中的设置代码。 这允许我在任务完成时记录一行,包括跟踪ID,但在任务期间我的日志行仍然无法访问跟踪信息。 PushNotificationCallable sendNotificationTask = new … Akka.future(sendNotificationTask).onRedeem(new F.Callback() { @Override public void invoke(Void aVoid) throws Throwable { Logger.info(“Completed sendNotificationTask from the service”); } }); 以下是一些缩写的应用程序日志,用于显示我当前所处的位置以及缺少的内容,第5列中的跟踪ID: 2013-07-26 11:31:06,885 DEBUG play-akka.actor.default-dispatcher-10 -2454018518484259555 [application] : […]

Play Framework 2.1.1部署问题

所以,我正在尝试部署我非常简单的Play Framework 2.1.1应用程序,但每当我通过端口命令行传递标志并应用数据库演变时,它们都会被忽略。 例如: sudo play start -Dhttp.port = 80 -DapplyEvolutions.default = true 使用此命令,服务器将无法启动。 port和applyEvolutions = true标志都被完全忽略,并抛出此错误: [warn] play – 您的生产数据库[默认]需要进化! [warn] play – 运行-DapplyEvolutions.default = true如果你想自动运行它们(小心)哎呀,无法启动服务器。 @ 6elhl9mca:数据库’默认’需要进化! 我已经尝试了所有我能想到的无济于事的东西。 在我的本地机器上使用Play Run工作正常,没有问题。 服务器正在运行Ubuntu 12.04。 所有正确的驱动程序和连接字符串都存在并经过测试,数据库正在运行,除了Play Framework之外,一切正常运行。

BCrypt.checkpw()无效的盐版本exception

我正在尝试使用BCrypt在我的Play 2.1中实现身份validation。 Java应用程序,但是当我尝试对用户进行身份validation时,我收到了Invalid salt version exception 。 这是我的堆栈跟踪 play.api.Application$$anon$1: Execution exception[[IllegalArgumentException: Invalid salt version]] at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.0] at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10.jar:2.1.0] at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:132) [play_2.10.jar:2.1.0] at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:128) [play_2.10.jar:2.1.0] at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0] at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0] java.lang.IllegalArgumentException: Invalid salt version at org.mindrot.jbcrypt.BCrypt.hashpw(BCrypt.java:664) ~[jbcrypt-0.3m.jar:na] at org.mindrot.jbcrypt.BCrypt.checkpw(BCrypt.java:763) ~[jbcrypt-0.3m.jar:na] at model.operations.DistrictOperations.authenticate(DistrictOperations.java:24) ~[na:na] at controllers.Application.authenticateDistrict(Application.java:26) ~[na:na] at Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(routes_routing.scala:133) ~[na:na] at Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(routes_routing.scala:133) ~[na:na] 我正在使用以下maven存储库: […]

播放2.1 SSL配置

我是Play的新手,也是为生产配置SSL的过程。 我可以使用自签名证书成功在dev模式下运行,但是当我尝试使用签名证书时,初始客户端握手失败,Play会生成以下堆栈跟踪: play – Error loading HTTPS keystore from conf/keystore.jks java.security.NoSuchAlgorithmException: RSA KeyManagerFactory not available at sun.security.jca.GetInstance.getInstance(GetInstance.java:159) ~[na:1.7.0_11] at javax.net.ssl.KeyManagerFactory.getInstance(KeyManagerFactory.java:139) ~[na:1.7.0_11] at play.core.server.NettyServer$PlayPipelineFactory$$anonfun$sslContext$1.apply(NettyServer.scala:74) [play_2.10.jar:2.1.1] at play.core.server.NettyServer$PlayPipelineFactory$$anonfun$sslContext$1.apply(NettyServer.scala:62) [play_2.10.jar:2.1.1] at scala.Option.map(Option.scala:145) [scala-library.jar:na] at play.core.server.NettyServer$PlayPipelineFactory.sslContext$lzycompute(NettyServer.scala:62) [play_2.10.jar:2.1.1] 我正在运行Play 2.1.1和Java 1.7.0_11。 我已经配置了ssl支持如下: //生成一个csr keytool -certreq -alias server -keyalg RSA -file server.csr -keystore keystore.jks //加载root和中间证书 keytool -import -alias godaddy -keystore keystore.jks […]