小编j3d*_*j3d的帖子

如何编写与数据库无关的Play应用程序并执行首次数据库初始化?

我正在使用SlickPlay Framework 2.1,我有一些麻烦.

鉴于以下实体......

package models

import scala.slick.driver.PostgresDriver.simple._

case class Account(id: Option[Long], email: String, password: String)

object Accounts extends Table[Account]("account") {
  def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
  def email = column[String]("email")
  def password = column[String]("password")
  def * = id.? ~ email ~ password <> (Account, Account.unapply _)
}
Run Code Online (Sandbox Code Playgroud)

...我必须为特定的数据库驱动程序导入一个包,但我想在生产中使用H2进行测试PostgreSQL.我该怎么办?

我能够通过覆盖单元测试中的驱动程序设置来解决此问题:

package test

import org.specs2.mutable._

import play.api.test._
import play.api.test.Helpers._

import scala.slick.driver.H2Driver.simple._
import Database.threadLocalSession

import models.{Accounts, Account} …
Run Code Online (Sandbox Code Playgroud)

scala playframework-2.0 slick

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

Play框架:如何序列化/反序列化枚举到/从JSON

鉴于以下列举......

object MyEnum extends Enumeration {

  type MyEnum = Value

  val Val1 = Value("val1")
  val Val2 = Value("val2")
  val ValN = Value("valN")

  implicit val myEnumFormat = new Format[MyEnum] {
    def reads(json: JsValue) = MyEnum.withName(json.as[String].value) // doesn't compile
    def writes(myEnum: MyEnum) = JsString(myEnum.toString)
  }
}
Run Code Online (Sandbox Code Playgroud)

...我需要将它序列化/反序列化为JSON.myEnumFormat不编译,我总是收到以下错误消息:

type mismatch;
[error]  found   : models.MyEnum.Value
[error]  required: play.api.libs.json.JsResult[models.MyEnumValue]
[error]  Note: implicit value myEnumFormat is not applicable here because it comes after the application point and it lacks an explicit result type
[error] …
Run Code Online (Sandbox Code Playgroud)

json scala playframework

27
推荐指数
4
解决办法
8061
查看次数

Play Framework和JSON Web Token

是否存在JWT的Scala实现或者至少是Play的一个示例?发布此问题后,我在互联网上进一步搜索并找到了JWT的一些介绍.任何建议都会非常感激.

authentication scala playframework jwt

19
推荐指数
1
解决办法
7630
查看次数

如何在不打开邮件客户端的情况下使用JavaScript发送电子邮件?

我正在编写一个带有注册按钮的HTML页面,该按钮应该无需打开本地邮件客户端即可静默发送电子邮件.这是我的HTML:

<form method="post" action="">
    <input type="text" id="email_address" name="name" placeholder="Enter your email address..." required>
    <button onclick="sendMail(); return false">Send Email</button>
</form>
Run Code Online (Sandbox Code Playgroud)

...这是我的JavaScript代码:

<script type="text/javascript">
  function sendMail() {
    var link = 'mailto:hello@domain.com?subject=Message from '
             +document.getElementById('email_address').value
             +'&body='+document.getElementById('email_address').value;
    window.location.href = link;
}
</script>
Run Code Online (Sandbox Code Playgroud)

上面的代码有效...但它会打开本地电子邮件客户端.如果我删除属性中的return语句,onclick如下所示:

<form method="post" action="">
    <input type="text" id="email_address" name="name" placeholder="Enter your email address..." required>
    <button onclick="sendMail()">Send Email</button>
</form>
Run Code Online (Sandbox Code Playgroud)

...然后根本不发送电子邮件.我错过了什么吗?

任何帮助将得到真诚的赞赏:-)

html javascript html-email

18
推荐指数
3
解决办法
10万
查看次数

Scala案例类:如何验证构造函数的参数

下面是一个案例类,用于验证name参数既不null是空的也不是空的:

case class MyClass(name: String) {

    require(Option(name).map(!_.isEmpty) == Option(true), "name is null or empty")
}
Run Code Online (Sandbox Code Playgroud)

正如所料,传递null或空字符串name导致IllegalArgumentException.

是否有可能重写验证以获得SuccessFailure代替抛出IllegalArgumentException

scala

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

Play框架:public/vs app/assets /

根据这一文件,该public/目录应包含能够原样送达静态资产,而可选app/assets目录应包含需要被处理,例如,通过缩小编译器在编译期的任何资产.

如果是SPA(单页应用程序),资产将包括JavaScript,CSS和图像文件......这是否意味着图像文件应存储在public/imagesJavaScript和CSS文件中app/assets/

然后,我还需要集成第三方模块,该模块由缩小的JavaScript库和需要自定义的非缩小JavaScript文件组成......我该如何管理?我应该保留标准的,已经缩小的资产public/并将自定义的JavaScript文件移动到app/assets/javascripts/

playframework

15
推荐指数
1
解决办法
3006
查看次数

如何在Play 2.1中将案例类序列化/反序列化为Json

我正在尝试将一些案例类序列化/反序列化为Json ...而且在处理只有一个字段的案例类时我遇到了麻烦(我正在使用Play 2.1):

import play.api.libs.json._
import play.api.libs.functional.syntax._

case class MyType(type: String)

object MyType {

  implicit val myTypeJsonWrite = new Writes[MyType] {
    def writes(type: MyType): JsValue = {
      Json.obj(
        "type" -> MyType.type
      )
    }
  }

  implicit val myTypeJsonRead = (
    (__ \ 'type).read[String]
  )(MyType.apply _)
}
Run Code Online (Sandbox Code Playgroud)

上面的代码总是生成以下错误消息:

[error] /home/j3d/Projects/test/app/models/MyType.scala:34: overloaded method value read with alternatives:
[error]   (t: String)play.api.libs.json.Reads[String] <and>
[error]   (implicit r: play.api.libs.json.Reads[String])play.api.libs.json.Reads[String]
[error]  cannot be applied to (String => models.MyType)
[error]     (__ \ 'method).read[String]
[error]                        ^
Run Code Online (Sandbox Code Playgroud)

我知道...包含只是一个字符串没有多大意义的情况下,类...但我需要序列化/反序列化的情况下,类非常相似,我上面描述的来自外部库中的一个.

任何的想法?我错过了什么吗?任何帮助将非常感激...我变得疯狂:-(谢谢.

json scala playframework-2.0 playframework-2.1

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

如何在Scala中处理空输入参数

我知道在Scala中一个方法永远不会返回null...但是输入参数是什么?给出以下代码片段...

object MyObject {

    def myMethod(p: String): Option[String] = {
        if (p == null) throw new IllegalArgumentException("p is null.")
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

......我检查的方式是否p正确?有什么建议吗?

scala

12
推荐指数
2
解决办法
8734
查看次数

PlayFramework:如何在没有将可选字段设置为null的情况下生成JSON

以下是创建帐户的课程:

class Account private(private var json: JsValue) {

  private def setValue(key: JsPath, value: JsValue) = {
    value match {
      case JsNull => json.transform(key.json.prune).map(t => json = t)
      case _ => json.transform((__.json.update(key.json.put(value)))).map(t => json = t)
    }
 }

  def asJson = json

  def id_= (v: Option[String]) = setValue((__ \ 'id), Json.toJson(v))
  def id = json as (__ \ 'id).readNullable[String]
  def name = json as (__ \ 'name).read[String]
  def name_= (v: String) = setValue((__ \ 'name), Json.toJson(v))
  def ownerId = json as …
Run Code Online (Sandbox Code Playgroud)

json scala playframework

12
推荐指数
1
解决办法
6868
查看次数

如何防止MongoDB在查找文档时返回对象ID?

我在MongoDB中有以下文档......

{
  "_id" : ObjectId("531221cd960100960116b992"),
  "username : "joe",
  "address" : [
    {
      "zip" : "8000",
      "city" : "Zurich"
    },
    {
      "zip" : "6900",
      "city" : "Lugano"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

...并检索第二个地址我使用以下语句:

db.users.find({ _id: ObjectId("531221cd960100960116b992") }, { addresses: { $slice: [0, 1] } } )
Run Code Online (Sandbox Code Playgroud)

这工作除了它还返回对象ID:

{ "addresses" : [ { "zip" : "6900", "city" : "Lugano" } ], "_id" : ObjectId("531221cd960100960116b992") }
Run Code Online (Sandbox Code Playgroud)

如何防止MongoDB返回对象ID?我知道我应该提供一个类似的投影_id : 0......但我应该把它放在上面的表达式中?我做了很多尝试......但没有成功.

谢谢.

mongodb mongodb-query

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