小编j3d*_*j3d的帖子

Play Framework:如何获取资产的绝对路径

我的Play应用程序会自动生成一些HTML电子邮件,这当然会引用服务器上的一些图像.由于HTML电子邮件需要完整的URL才能在客户端获取图像,因此我在我的基础URL中定义了基本URL application.conf,然后在视图模板中构建完整路径.那说,有没有办法获得public/images目录的完整URL,以便我不再需要额外的配置?

谢谢.

playframework playframework-2.0

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

ReactiveMongo:如何将FindAndModify返回的BSON转换为JSON

下面是使用Mongo更新文档的代码FindAndModify:

val selector = BSONDocument("id" -> "1234")
val modifier = BSONDocument("$set" -> BSONDocument("email" -> "new@domain.com"))    

ReactiveMongoPlugin.db.command(FindAndModify(
   collection.name,
   selector,
   Update(modifier, false),
   false,
   None
 )).transform(
   success => success.map { s =>
     // doesn't work...
     Json.fromJson[Seq[JsValue]](toJson(s)).map(for (item <- _) yield item).get
   }.getOrElse(List[JsValue]()),
   failure => failure match {
     case e: LastError => DaoServiceException(e.message, Some(DATABASE_ERROR))
   } 
)
Run Code Online (Sandbox Code Playgroud)

success块我试图将返回的BSONDocument集合转换为JsValue集合...但它不起作用,结果JsValue集合总是空的(我已经验证BSONDocument了命令返回的集合,我确认它是非空的).我错过了什么吗?

scala mongodb reactivemongo

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

Play Framework:如何替换JSON树中所有值的出现

鉴于以下JSON ......

{ "id":"1234",
  "name" -> "joe",
  "tokens: [{
     "id":"1234",
     "id":"2345"
   }]
}
Run Code Online (Sandbox Code Playgroud)

...我需要像这样替换所有ids 的值xxxx:

{ "id":"xxxx",
  "name" -> "joe",
  "tokens: [{
     "id":"xxxx",
     "id":"xxxx"
   }]
}
Run Code Online (Sandbox Code Playgroud)

让我们开始创建JSON树:

val json = Json.obj(
  "id" -> "1234",
  "name" -> "joe",
  "tokens" -> Json.arr(
     Json.obj("id" -> "1234"),
     Json.obj("id" -> "2345")
  )
)

json: play.api.libs.json.JsObject = {"id":"1234","name":"joe","tokens":[{"id":"1234"},{"id":"2345"}]}
Run Code Online (Sandbox Code Playgroud)

然后,获取所有ids非常简单:

 json \\ "id"

 res64: Seq[play.api.libs.json.JsValue] = List("1234", "1234", "2345")
Run Code Online (Sandbox Code Playgroud)

现在,我该如何替换所有ids 的值xxxx

json scala playframework

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

PlayFramework:如何将一系列JsValue实例合并到单个JSON文档中

给定以下JsValue实例序列:

[
    { "name":"j3d" },
    { "location":"Germany" }
]
Run Code Online (Sandbox Code Playgroud)

如何将它们合并到这样的单个JSON文档?

{
    "name":"j3d",
    "location":"Germany"
}
Run Code Online (Sandbox Code Playgroud)

以下是我的Scala代码:

import play.api.libs.json._

val values = Seq(Json.obj("name":"j3d"), Json.obj("location":"Germany")
Run Code Online (Sandbox Code Playgroud)

如何合并所有JSON对象values

json scala playframework

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

Scala:错误处理和异常匹配

鉴于以下自定义Exception...

trait ServiceException extends RuntimeException {

  val errorCode: Int
}

object ServiceException {

  def apply(
    message: String, _errorCode: Int
  ): ServiceException = new RuntimeException(message) with ServiceException {
    val errorCode: Int = _errorCode
  }

  def apply(
    message: String, cause: Throwable, _errorCode: Int
  ): ServiceException = new RuntimeException(message, cause) with ServiceException {
    val errorCode: Int = _errorCode
  }
}
Run Code Online (Sandbox Code Playgroud)

... 和以下方法返回一个Future...

myService.doSomethingAndReturnFuture.map {
  ...
}.recover {
  case ServiceException(5) =>
    Logger.debug("Error 5")
// this does not work
// case …
Run Code Online (Sandbox Code Playgroud)

scala

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

如何定义与Map [String,Option [String]]对应的类型?

给出以下采用Map[String, Option[String]]参数的方法:

def myMethod(m: Map[String, Option[String]]) = {
  ...
}
Run Code Online (Sandbox Code Playgroud)

如何定义一个MyMap实现的新类型,Map[String, Option[String]]使方法如下所示:

def myMethod(m: MyMap) = {
  ...
}
Run Code Online (Sandbox Code Playgroud)

scala

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

Play Framework:如何为每个响应添加标题

在下面Controller,Authenticated从请求标头中提取标记,并且当且仅当标记有效时才调用给定的操作(为简单起见,代码已经简化):

object MyController extends Controller {

  def Authenticated(action: Token => EssentialAction) = EssentialAction { requestHeader =>
    val jwt = requestHeader.headers.get(HeaderNames.AUTHORIZATION) match {
      case Some(header) => s"""$AuthScheme (.*)""".r.unapplySeq(header).map(_.head.trim)
      case _ => requestHeader.getQueryString("auth").map(UriEncoding.decodePath(_, SC.US_ASCII.name))
    }

    jwt match {
      case Some(t) if t.isValid =>
        val token: Token = authService.token(t)
        action(token)(requestHeader)
      case _ => Done(Unauthorized.withHeaders(HeaderNames.WWW_AUTHENTICATE -> AuthScheme))
    }
  }

  def getUser(userId: String) = Authenticated { token =>
    Action.async { request =>
      userService.find(userId).map {
        case Some(user) => Ok(Json.obj("user" -> user.asJson)).withHeaders(
            "token" …
Run Code Online (Sandbox Code Playgroud)

scala token http-headers playframework

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

如何从URL字符串中提取主机名和端口?

我需要从URL中提取主机名和端口(如果有的话),下面是我的代码:

val regEx = """^(?:https?:\/\/)?(?:www\.)?(.*?)\//""".r
val url = regEx.split("http://www.domain.com:8080/one/two")
val hostname = url(url.length - 1).split("/")(0).split(":")(0)
val hasPort = url(url.length - 1).split("/")(0).split(":").length > 1
val port = if (hasPort) url(url.length - 1).split("/")(0).split(":")(1) else 80
Run Code Online (Sandbox Code Playgroud)

上面的代码按预期工作...但在Scala中肯定有更好的方法来获得相同的结果.

如何在不使用所有丑陋的splits的情况下获取主机名和端口(如果有的话)?

regex scala

0
推荐指数
1
解决办法
3017
查看次数

传递给 fmt.Sprintf 的字符串包含在方括号中

鉴于以下代码片段

package main

import (
    "fmt"
)

type Message string

const (
    ConnectRepositoryError Message = "failed to connect %s repository"
)

func main() {
    fmt.Println(ConnectRepositoryError.M("user"))
}

func (m Message) M(args ...string) string {
    return fmt.Sprintf(string(m), args)
}
Run Code Online (Sandbox Code Playgroud)

... 为什么fmt.Sprintf将指定的字符串 ( user) 括在方括号中?

failed to connect [user] repository
Run Code Online (Sandbox Code Playgroud)

我希望这个输出:

failed to connect user repository
Run Code Online (Sandbox Code Playgroud)

go format-string

-1
推荐指数
1
解决办法
241
查看次数