小编Rhy*_*ury的帖子

为什么在Play Framework中使用@Singleton而不是Scala的对象?

我一直在玩Play!框架斯卡拉现在将近一年.我目前正在使用2.5.x版.

我知道Play中控制器的发展以及开发人员如何被迫远离静态object路由.

我也知道Guice在游戏中的用法.

如果您下载激活器并运行:

activator new my-test-app play-scala
Run Code Online (Sandbox Code Playgroud)

Activator将为您生成模板项目.我的问题是围绕模板的这个文件.

我的测试,应用程序/应用程序/服务/ Counter.scala

package services

import java.util.concurrent.atomic.AtomicInteger
import javax.inject._

/**
 * This trait demonstrates how to create a component that is injected
 * into a controller. The trait represents a counter that returns a
 * incremented number each time it is called.
 */
trait Counter {
  def nextCount(): Int
}

/**
 * This class is a …
Run Code Online (Sandbox Code Playgroud)

scala object guice playframework

28
推荐指数
2
解决办法
6367
查看次数

Scala PlayJson Cyclic Reference

上下文

我有一个案例类,它是层次结构中的一个项目,它引用自己是这样的:

case class Node(
  name:     String,
  children: Option[Seq[Node]] = None
)
Run Code Online (Sandbox Code Playgroud)

我想要一个PlayJson Format.

通常,您可以这样做:

implicit lazy val formatter = Json.format[MyCaseClass]
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

为什么?

PlayJson使用Scala宏Format为case类生成一个,它将遍历所有字段,当它到达字段时children,它将查找Node尚未构造的现有格式化程序,以编译错误结束:

No implicit format for Option[Seq[Node]] available.
[error]   implicit lazy val formatter = Json.format[Node]
Run Code Online (Sandbox Code Playgroud)

问题

什么是最好的方法来解决这个问题?
这是PlayJson格式宏的已知问题吗?

json scala playframework-2.0 play-json

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