标签: playframework

播放框架:如何使用"moreStyles"和"moreScripts"

在文件中main.html,在Play创建的默认项目中!,有这条线:

#{get 'moreStyles' /}
Run Code Online (Sandbox Code Playgroud)

我明白如果我需要添加更多样式,在我的视图脚本中,我必须使用

#{set tag:'value' /}
Run Code Online (Sandbox Code Playgroud)

tag应该在哪里moreStyles,但似乎要将值设置为完整的HTML <link>标记.如果视图需要添加更多样式或脚本会发生什么?

谢谢!

java templates playframework

23
推荐指数
2
解决办法
9041
查看次数

如何在Play Framework 2.0中贡献模块?

最初的Play Framework 1.x拥有一个优雅而简单的模块管理系统.与Play存储库相结合,它是使用第三方组件和库快速增强应用程序的好方法.

使用Play 2.0,情况就大不相同了.

如何贡献所谓的" 模块 "?

java scala module playframework playframework-2.0

23
推荐指数
2
解决办法
2399
查看次数

什么云平台支持playframework?

我现在知道2:

  1. http://heroku.com:支持play1和play2,有免费计划.
  2. http://www.playapps.net:支持play1,未知的play2,没有免费的计划.

cloud-hosting playframework playframework-2.0

23
推荐指数
1
解决办法
9701
查看次数

如何在Play框架2中获取绝对路径url作为String?

我目前正在通过以下方式获取相对URL路由作为String:

String url = controllers.directory.routes.Directory.viewOrganisation( org.id ).url();
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想得到完整的绝对网址.我确信这很简单,我似乎无法找到它.

或者,如何在视图中获取当前域以添加到相对URL?

playframework playframework-2.0

23
推荐指数
2
解决办法
2万
查看次数

Akka - 重新发送"破坏"消息

在官方的akka 2.0.4文档中,它说:

actor重新启动只替换实际的actor对象; 邮箱的内容不受重新启动的影响,因此在postRestart挂钩返回后将继续处理消息.将不再接收触发异常的消息.在重新启动时发送给actor的任何消息都将像往常一样排队到其邮箱.

假设我有一条消息导致我的演员重新开始.它不再存在于邮箱中,因此它不会被将要占据它的角色处理.如果我希望这个消息由演员处理(假设在这种情况下顺序无关紧要),演员在重启时将消息发送给自己是不是一个坏主意?

一些(伪)代码显示我的意思:

class ResendingActor extends Actor {
  var curMessage: Option[MyMessage] = None
  def receive = {
    case MyMessage(x) => {
      curMessage = Some(MyMessage(x))
      /* processing */
      curMessage = None
    }
  }
  override def preRestart(reason: Throwable, message: Option[Any]) {
    curMessage match {
      case Some(x) => self ! x
      case None => ;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这样,在重新启动之前,actor未处理的消息被推送到新actor的队列末尾.

所以我的问题是:我有什么理由不这样做吗?

我唯一能想到的是,如果消息由于某种原因而变形,它将永远不会离开系统并导致演员经常重启...

scala akka playframework

23
推荐指数
1
解决办法
3109
查看次数

如何在Play框架中针对非内存数据库(如MySQL)创建单元测试,并重置为已知状态?

我想创建单元测试,涵盖在Play框架2.1.0中使用关系数据库的代码.这有很多可能性,所有原因都有问题:

测试内存H2数据库

Play框架文档建议在H2内存数据库上运行单元测试,即使用于开发和生产的主数据库使用其他软件(即MySQL):

app = Helpers.fakeApplication(Helpers.inMemoryDatabase());
Run Code Online (Sandbox Code Playgroud)

我的应用程序不使用复杂的RDBMS功能,如存储过程,大多数数据库访问情况是ebean调用,因此它应该兼容MySQL和H2.

然而,在变阵创建表的语句中使用MySQL特定的功能,如指定ENGINE = InnoDB,DEFAULT CHARACTER SET = utf8等我担心我是否会删除这些专有部分CREATE TABLE,MySQL将使用一些默认设置,我无法控制和依赖的版本,所以测试和开发应用程序主MySQL配置必须修改.

任何人都使用这种方法(使evolutions与MySQL和H2兼容)?

其他想法如何处理:

  • MySQL和H2分开演变(不是个好主意)
  • 有些方法让H2忽略了额外的MySQL内容create table(MySQL兼容模式不起作用,它仍然会抱怨default character set).我不知道怎么回事.

在与主数据库相同的数据库驱动程序上进

H2内存数据库的唯一优势是它速度快,并且在与dev/production数据库相同的数据库驱动程序上进行测试可能会更好,因为它更接近真实环境.

如何在Play框架中完成?

尝试:

Map<String, String> settings = new HashMap<String, String>();
settings.put("db.default.url", "jdbc:mysql://localhost/sometestdatabase");
settings.put("db.default.jndiName", "DefaultDS");
app = Helpers.fakeApplication(settings);
Run Code Online (Sandbox Code Playgroud)

看起来像evolutions在这里工作,但在每次测试之前如何最好清理数据库?通过创建截断每个表的自定义代码?如果它会丢弃表格,那么演化会在下一次测试之前再次运行,还是每个play test命令应用一次?或者每次Helpers.fakeApplication()调用一次?

这里的最佳做法是什么?听说dbunit,有没有可能整合它没有太多的痛苦和怪癖?

unit-testing database-testing playframework playframework-2.0

23
推荐指数
2
解决办法
1万
查看次数

如何在Play Framework 2.x中实现嵌入对象的隐式Json Writes

有两个班级FooBar.Foo包含一个字段Bar.问题是,如何Writes为类实现隐式json Foo

这是代码:

package models

import play.api.libs.json._

case class Foo(id: String, bar: Bar)

object Foo {
  implicit val implicitFooWrites = new Writes[Foo] {
    def writes(foo: Foo): JsValue = {
      Json.obj(
        "id" -> foo.id,
        "bar" -> foo.bar
      )
    }
  }
}

case class Bar(x: String, y: Int)

object Bar {
  implicit val implicitBarWrites = new Writes[Bar] {
    def writes(bar: Bar): JsValue = {
      Json.obj(
        "x" -> bar.x,
        "y" -> bar.y …
Run Code Online (Sandbox Code Playgroud)

json scala playframework playframework-2.0

23
推荐指数
1
解决办法
2万
查看次数

如何创建一个Play 2.2 Scala应用程序作为SBT子项目

我正在尝试创建一个Scala应用程序,包括一个库项目(让我们称之为common),一个Thrift服务器项目(让我们称之为server)和一个Play Web应用程序项目(以下称为web).这三个都是用Scala编写的,并用sbt构建.

我的项目结构如下所示:

myproject/
-common/
  ...
-server/
  ...
-web/
  -app/
  -conf/
  ...
-project/
  -Build.scala
  -build.properties
-build.sbt
Run Code Online (Sandbox Code Playgroud)

我的build.sbt文件(简化了一下)看起来像这样:

import play.Project._

name := "myproject"

version := "1.0-SNAPSHOT"

lazy val common = project

lazy val web = project
    .settings(playScalaSettings: _*)
    .dependsOn(common)

lazy val server = project
    .dependsOn(common)

lazy val root = project.in(file("."))
    .aggregate(common, web, server)
Run Code Online (Sandbox Code Playgroud)

这个问题是根项目不是Play项目,所以play命令不起作用(它出错了

java.lang.RuntimeException: */*:playRunHooks is undefined.
at scala.sys.package$.error(package.scala:27)
Run Code Online (Sandbox Code Playgroud)

如果我在SBT文件中的行playScalaSettings之后插入行,我可以通过使根项目看起来像Play项目来解决这个version问题,但是我有另一个问题:该play run命令尝试运行根项目,而不是web子项目.显然,该play …

sbt playframework

23
推荐指数
1
解决办法
2931
查看次数

如何使用Guice DI和Slick运行ScalaTest?

我不知道如何以GuiceApplicationBuilder这种方式配置,我能够加载需要DatabaseConfigProvider注入的控制器.

我想指定一个替代的postgres数据库用于测试,或者在内存数据库中指定(如果可能的话).

class   User
extends MySpecs
with    OneAppPerTest
{
    override def newAppForTest( testData: TestData ) = new GuiceApplicationBuilder()
        // Somehow bind a database here, I guess?
        .build()

    "A test" should "test" in
    {
        val result = Application.instanceCache[api.controller.User]
            .apply( app )
            .list()( FakeRequest() )

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

[info] - should return an entity *** FAILED ***
[info]   com.google.inject.ConfigurationException: Guice configuration errors:
[info] 
[info] 1) No implementation for play.api.db.slick.DatabaseConfigProvider was bound.
[info]   while locating …
Run Code Online (Sandbox Code Playgroud)

scala guice playframework slick play-slick

23
推荐指数
1
解决办法
3106
查看次数

Play Framework应用程序部署

它已经花了很长时间在一个游戏应用程序上工作,现在是时候部署它了.这是我的第一次,所以我有点失落.哪个托管公司是最好的,并提供良好的价格?

java deployment hosting web-applications playframework

22
推荐指数
4
解决办法
1万
查看次数