我有多个模型类,它们共享相同的属性.出于这个原因,我创造了一个特征,例如:
trait Player extends Temp {
val gameId: BSONObjectID
val personalDetails: abc.PersonalDetails // <- comes from shared library
}
case class FootballPlayer(var _id: Option[BSONObjectID] = None,
gameId: BSONObjectID,
personalDetails: abc.PersonalDetails,
var created: Option[DateTime] = None,
var updated: Option[DateTime] = None
) extends Player
case class VideogamePlayer(var _id: Option[BSONObjectID] = None,
gameId: BSONObjectID,
personalDetails: abc.PersonalDetails,
var created: Option[DateTime] = None,
var updated: Option[DateTime] = None
) extends Player
Run Code Online (Sandbox Code Playgroud)
所有这些型号的,有作为一个伴侣的对象play.api.libs.json.Reads
和play.api.libs.json.OWrites
定义.
例如:
object FootballPlayer {
import play.api.libs.functional.syntax._
import play.api.libs.json.Reads._ …
Run Code Online (Sandbox Code Playgroud) 我使用了play-silhouette-seed作为我的应用程序的模板.所以在我的项目中,我使用基于cookie的authenticator(CookieAuthenticator
).即使对于通过我的Twirl模板中嵌入的JavaScript的REST调用,这也非常好用.但是,现在我想在除浏览器之外的客户端中以编程方式进行REST调用.因此,我必须Set-Cookie: authenticator=...
在每个响应上检索元素并将其设置为我的请求的一部分.在我的Twirl模板中嵌入并在浏览器中呈现的JavaScript代码段中,这没有问题,因为我不需要处理它,但对于其他客户端(服务器等),这会导致头痛.
我现在想要实现一个JWTAuthenticator
除了我的CookieAuthenticator
.这甚至是支持,还是我必须完全切换到JWTAuthenticator
?此外,我是否需要单独的操作,即使除了验证器之外一切都应该是相同的实现?
我正在研究Screen
类(包org.scalajs.dom.raw
)并注意到以下属性:
def width: Double = js.native
def availHeight: Double = js.native
def height: Double = js.native
Run Code Online (Sandbox Code Playgroud)
是否有任何理由使用Double
而不是Int
?我不熟悉Scala.js代码,但对我来说使用它会更有意义Int
.
我在这里错过了什么?
我想尝试下面的小例子:
object Webserver {
def main(args: Array[String]) {
implicit val system = ActorSystem("my-system")
implicit val materializer = ActorMaterializer()
// needed for the future flatMap/onComplete in the end
implicit val executionContext = system.dispatcher
val route =
path("hello") {
get {
redirect(Uri("https://google.com"), StatusCodes.PermanentRedirect)
}
}
val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)
println(s"Server online at http://localhost:8080/\nPress RETURN to stop...")
StdIn.readLine() // let it run until user presses return
bindingFuture
.flatMap(_.unbind()) // trigger unbinding from the port
.onComplete(_ => system.terminate()) // and shutdown when …
Run Code Online (Sandbox Code Playgroud) 我正在尝试扩展Navigator
该oscpu
属性。这个问题已经在这里得到了回答,并且按照Justin du Coeur 的建议,实现工作完美。问题是,当我在 Firefox 以外的浏览器中执行代码时,我得到一个UndefinedBehaviorError
异常,这是合乎逻辑的,因为此属性仅存在于 Firefox 中。
但是,我不想接收异常,而是只想使用Option
. 所以如果它不存在,它就会存在,如果存在,None
我会得到Some("OSCPU info")
.
我怎样才能使这项工作?我尝试了以下方法,但我不确定如何转换为Option
.
@js.native
trait OSCPUNavigator extends js.Object {
def oscpu: js.UndefOr[String] = js.native
}
implicit def toOSCPUNavigator(n: Navigator): OSCPUNavigator =
n.asInstanceOf[OSCPUNavigator]
Run Code Online (Sandbox Code Playgroud)