有两个班级Foo和Bar.Foo包含一个字段Bar.问题是,如何Writes为类实现隐式json Foo?
这是代码:
package models
import play.api.libs.json._
case class Foo(id: String, bar: Bar)
object Foo {
implicit val implicitFooWrites = new Writes[Foo] {
def writes(foo: Foo): JsValue = {
Json.obj(
"id" -> foo.id,
"bar" -> foo.bar
)
}
}
}
case class Bar(x: String, y: Int)
object Bar {
implicit val implicitBarWrites = new Writes[Bar] {
def writes(bar: Bar): JsValue = {
Json.obj(
"x" -> bar.x,
"y" -> bar.y …Run Code Online (Sandbox Code Playgroud) 使用play框架运行测试时,我遇到了进化问题
测试看起来像这样:
class TestFooController extends PlaySpec with GuiceOneServerPerSuite {
"foo endpoint should store some data" in {
val wsClient = app.injector.instanceOf[WSClient]
val url = s"http://localhost:$port/foo"
val requestData = Json.obj("foo" -> "bar")
val response = await(wsClient.url(url).post(requestData))
response.status mustBe OK
}
}
Run Code Online (Sandbox Code Playgroud)
数据库配置如下所示:
slick.dbs.default.driver="slick.driver.H2Driver$"
slick.dbs.default.db.driver="org.h2.Driver"
slick.dbs.default.db.url="jdbc:h2:mem:play"
Run Code Online (Sandbox Code Playgroud)
假设有一个创建表的进化脚本,foos这个脚本在开发模式下工作正常.
运行测试时,抛出以下错误:
play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[JdbcSQLException: Table "foos" not found;
foos无法找到该表,因此我假设尚未应用数据库演变.
然后我将数据库配置更改为在开发模式下使用的postgresql.
slick.dbs.default.driver = "slick.driver.PostgresDriver$"
slick.dbs.default.db.driver = "org.postgresql.Driver"
slick.dbs.default.db.url = "jdbc:postgresql://localhost:5432/foo-test"
slick.dbs.default.db.user = "user"
slick.dbs.default.db.password = "password"
Run Code Online (Sandbox Code Playgroud)
使用此配置,测试工作正常,数据存储在数据库中,因此数据库演进运行得很好. …
scala playframework playframework-evolutions play-slick playframework-2.6
我有一个表单,其中输入字段的数量是动态的.
如何使用播放表单映射这些输入字段?假设每个输入标记的名称是'foo_x',其中x是一个整数,每当在客户端动态创建新的输入字段时,该整数就会递增.Play中是否有自动映射可用,或者我必须"手动"执行此操作,如果是这样,如何执行此操作?
我有一个功能列表和一个矢量图层,我需要知道,每个功能是否在地图视图的范围内.
我正在使用openlayers v3.9.0,并且在相应的文档中有一个函数containsExtent()(链接),它接受一个扩展并返回一个布尔值.似乎正是我正在寻找的功能.但是抛出一个错误,说containsExtent不是一个函数.
Uncaught TypeError: extent.containsExtent is not a function
代码段:
// someVectorSource is of type ol.source.Vector
// allMyFeatures is an array of features of type ol.Feature
var extent = someVectorSource.getExtent();
_.each(allMyFeatures, function(feature) {
if (extent.containsExtent(feature.getGeometry().getExtent())) {
// do something
}
});
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?
如果这是一种更好的方法,那么只需要在一次调用中获取范围内的那些特征而不迭代列表,就会更好.
我试图在播放会话中添加一个简单的字符串,但它不起作用.为了测试,我写了一个小控制器函数,首先在会话中添加一个字符串,然后打印会话包含的所有元素,但它总是为空.
def foo = Action { request =>
request.session + ("token", "foobar")
request.session.data.foreach{ keyVal => println("\tkey value pair: " + keyVal._1 + ", " + keyVal._2)}
Ok("just a test")
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我需要通过application.conf或其他东西激活一些东西吗?