标签: playframework-2.2

将JsonNode对象转换为Map

我有一个C#程序,它给我发送了一个json对象.我正在创建一个Java Play网站来捕获POST数据.我得到正确的数据作为JsonNode对象,但需要将其转换为Map.

我正在使用 com.fasterxml.jackson.databind.JsonNode

这是我正确捕获JsonNode对象的位置:

public static Result index() {
    JsonNode json = request().body().asJson();
}
Run Code Online (Sandbox Code Playgroud)

现在我有了这个对象,我需要弄清楚如何将它转换为一个Map让我可以如此神奇的对象.稍后我会想要将其转换Map为要在响应中发送的json对象.

我一直在查看文档,但可用的方法不会作为解决方案尖叫.

这是我为这个特定JsonNode对象引用的文档:http: //fasterxml.github.io/jackson-databind/javadoc/2.2.0/com/fasterxml/jackson/databind/JsonNode.html

java json jackson playframework-2.2

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

IntelliJ IDEA报告在Controller中使用路由时突出显示错误

我有一个Scala Play项目.我正在使用Play 2.2.1.我下载了Scala,Play 2支持和SBT插件.一切都还可以,但是当我在Controller中调用Route on Action时出现以下错误(Look screenshots):

Screenshot1

Screenshot2

我正在使用IntelliJ IDEA 12.1.6 Ultimate版本.Scala版本2.10.2

有谁知道如何解决这个问题?

提前致谢!


编辑

当我通过play console中的"play idea"命令生成我的项目到Intellij IDEA时,我在IDEA项目结构中打开项目是这样的:

screenshot6

然后我看到回答@millhouse并讨论这个githup([Play 2.2]"play idea"在目标中创建了不工作的源映射)并从Sources文件夹中删除了以下文件:

  • 目标\阶-2.10\src_managed \主\控制器
  • 目标\斯卡拉2.10\src_managed \主\意见

并且"报告突出显示错误"消失了,但现在还有另一个错误:

screenshot3

screenshot7

我的路线:

screenshot4

我已经更改了"Sources Folders",如下所示:

screenshot5

但它对我没有帮助.并且仍然是"未指定的值参数"错误.

intellij-idea scala-2.10 playframework-2.2

34
推荐指数
2
解决办法
6513
查看次数

播放2 JSON格式中缺少属性的默认值

我在play scala中有一个等效的以下模型:

case class Foo(id:Int,value:String)
object Foo{
  import play.api.libs.json.Json
  implicit val fooFormats = Json.format[Foo]
}
Run Code Online (Sandbox Code Playgroud)

对于以下Foo实例

Foo(1, "foo")
Run Code Online (Sandbox Code Playgroud)

我会得到以下JSON文档:

{"id":1, "value": "foo"}
Run Code Online (Sandbox Code Playgroud)

此JSON是持久存储的,并从数据存储区读取.现在我的要求已经改变了,我需要为Foo添加一个属性.该属性具有默认值:

case class Foo(id:String,value:String, status:String="pending")
Run Code Online (Sandbox Code Playgroud)

写入JSON不是问题:

{"id":1, "value": "foo", "status":"pending"}
Run Code Online (Sandbox Code Playgroud)

但是从它读取会产生一个JsError,错过了"/ status"路径.

如何以最小的噪音提供默认值?

(ps:我有一个答案,我将在下面发布,但我对此并不满意,并且会赞成并接受任何更好的选择)

json scala playframework-2.2

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

如何在Play 2.2.x中使用dist任务禁用ScalaDoc生成(使用project/build.scala)?

将以下设置添加到build.sbtPlay 2.2.x应用程序的文件不会禁用Scaladoc生成.怎么可以禁用?

play.Project(appName, appVersion, appDependencies)
    .settings(scalaVersion := "2.10.3")
    .settings(jsSettings : _*)
    .settings(
        publishArtifact in (Compile, packageDoc) := false,
        publishArtifact in packageDoc := false
    )
Run Code Online (Sandbox Code Playgroud)

sbt scaladoc playframework-2.2 sbt-native-packager

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

何时使用Actors vs Futures?

我目前正在玩Play!具有以下体系结构的项目:

控制器 - >服务(演员) - >模型(常规案例类)

对于每个请求,我们将发出对服务层的调用,如下所示:

Service ? DoSomething(request, context)
Run Code Online (Sandbox Code Playgroud)

我们在应用程序初始化期间创建的akka​​路由器后面有一定数量的这些服务参与者,并且可以按需扩展.

在服务中,我们主要进行适度的数据操作或数据库调用:

receive = {
    case DoSomething(x, y) => {
           ...
           Model.doSometing(...)
           sender ! result
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道我们是否应该使用演员来提供我们的服务,或者仅仅使用期货.

  1. 我们没有任何需要在服务参与者中修改的内部状态,无论消息进入函数并吐出结果.这不是演员模特的大力量吗?

  2. 我们正在做很多任务,这些任务似乎与演员模型相差甚远

  3. 我们没有进行繁重的计算和远程处理没有意义,因为大多数工作是针对数据库和对一个远程actor进行往返操作来进行一些db调用是不必要的

  4. 我们确实使用reactivemongo,因此每个db调用都是非阻塞的.我们可以打很多电话

在我看来,删除akka并使用Futures让我们的生活变得更轻松,而且我们并没有真正失去任何东西.

akka playframework-2.2

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

将项目升级到Play Framework 2.2.0版

将播放项目升级到2.2.0时,会出现以下错误:

sbt.ResolveException: unresolved dependency: play#sbt-plugin;2.2.0: not found
Run Code Online (Sandbox Code Playgroud)

sbt playframework playframework-2.2

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

将任何Scala对象转换为JSON

我正在使用最新版本的Play Framework,它就是这样的JSON lib Json.toJson(obj).但是toJson无法将任何Scala对象转换为JSON,因为数据结构未知.有人建议使用案例转换,但这里我的Scala知识不足.数据来自数据库,但表的结构未知.

我应该在哪里进一步创建将这种未知数据结构转换为JSON?

json scala playframework playframework-2.2

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

使用Play!Framework 2.2子项目

我正试图在子项目中拆分我的Play!Framework 2.2项目,我很难搞清楚它.

这是我的文件夹结构:

MyProject/
 | - app/
 | --- controllers/ # containing some main controllers
 | --- views/ # resulting views
 | - build.sbt # see after
 | - conf/
 | --- application.conf
 | --- routes
 | --- modules/ # My modules folder, aka sub projects
 | -------- common/
 | ------------ app/
 | --------------- models/ # The models
 | --------------- utils/
 | -------- api/
 | -------- web/
 | ------------ app/ # some controllers/views
 | ------------ conf/ # routes mainly
 | …
Run Code Online (Sandbox Code Playgroud)

playframework-2.2

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

Play 2和Swagger的可选参数

我正在尝试使用Swagger来记录Play 2 REST API,但swagger-play2似乎并不理解使用Scala Option类型定义的可选参数- 在Play 2中使参数可选的常规方法:

GET /documents controllers.DocumentController.getDocuments(q: Option[String])
Run Code Online (Sandbox Code Playgroud)

我希望qparam是可选的.这个Option[String]参数有一个匹配的带注释的控制器方法.在启动时,我进入UNKOWN TYPE日志并由api-docs生成的json中断swagger-ui:

UNKNOWN TYPE: scala.Option
[info] play - Application started (Dev)
Run Code Online (Sandbox Code Playgroud)

是否有另一种方法可以在Play 2中指定可选参数并让Swagger理解它?

scala swagger playframework-2.2 swagger-play2

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

在Java Play Framework 2.2.x中启用CORS

我在Java Play 2.2.x中启用跨域时遇到问题

在Java Play 2.1.3中,此代码通过将其放在Global.java中来工作

public class Global extends GlobalSettings {

  private class ActionWrapper extends Action.Simple {
    public ActionWrapper(Action action) {
     this.delegate = action;
  }

    @Override
    public Result call(Http.Context ctx) throws java.lang.Throwable {
      Result result = this.delegate.call(ctx);
      Http.Response response = ctx.response();
      response.setHeader("Access-Control-Allow-Origin", "*");
      return result;
    }
  }

  @Override
  public Action onRequest(Http.Request request, java.lang.reflect.Method actionMethod) {
    return new ActionWrapper(super.onRequest(request, actionMethod));
  }

}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在java play 2.2.x上编译时,它不再编译了.

编译错误消息:

Global.ActionWrapper不是抽象的,并且不会覆盖Action中的抽象方法调用(Context)...

java play 2.2.x有没有相同的代码?

谢谢.

java cors playframework playframework-2.2

13
推荐指数
2
解决办法
6060
查看次数