我正在尝试从Play 2.4迁移到2.5,避免弃用.
我有一个abstract class Microservice从中创建了一些对象.Microservice该类的某些函数用于play.api.libs.ws.WS发出HTTP请求以及play.Play.application.configuration读取配置.
以前,我需要的只是一些进口,如:
import play.api.libs.ws._
import play.api.Play.current
import play.api.libs.concurrent.Execution.Implicits.defaultContext
Run Code Online (Sandbox Code Playgroud)
但是现在你应该使用依赖注入来使用WS,也可以使用访问当前的Play应用程序.
我有类似的东西(缩短):
abstract class Microservice(serviceName: String) {
// ...
protected lazy val serviceURL: String = play.Play.application.configuration.getString(s"microservice.$serviceName.url")
// ...and functions using WS.url()...
}
Run Code Online (Sandbox Code Playgroud)
对象看起来像这样(缩短):
object HelloWorldService extends Microservice("helloWorld") {
// ...
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不明白如何将所有的东西(WS,配置,ExecutionContect)放到抽象类中以使其工作.
我试着把它改成:
abstract class Microservice @Inject() (serviceName: String, ws: WSClient, configuration: play.api.Configuration)(implicit context: scala.concurrent.ExecutionContext) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
但这并没有解决问题,因为现在我也要改变对象,我无法弄清楚如何.
我试图把它object变成一个@Singleton class …
我设法用自定义约束实现表单验证,但现在我想用JSON数据做同样的事情.
如何将自定义验证规则应用于JSON解析器?
示例:客户端的POST请求包含用户名(username),我不仅要确保此参数是非空文本,还要确保此用户实际存在于数据库中.
// In the controller...
def postNew = Action { implicit request =>
request.body.asJson.map { json =>
json.validate[ExampleCaseClass] match {
case success: JsSuccess[ExampleCaseClass] =>
val obj: ExampleCaseClass = success.get
// ...do something with obj...
Ok("ok")
case error: JsError =>
BadRequest(JsError.toFlatJson(error))
}
} getOrElse(BadRequest(Json.obj("msg" -> "JSON request expected")))
}
// In ExampleCaseClass.scala...
case class ExampleCaseClass(username: String, somethingElse: String)
object ExampleCaseClass {
// That's what I would use for a form:
val userCheck: Mapping[String] = nonEmptyText.verifying(userExistsConstraint)
implicit val …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 iOS 14 的未发布应用程序中设置关联域。我尽可能遵循文档。我正在使用本地开发网络服务器以及模拟器和真实 iPhone 中的应用程序本身进行本地测试。
不仅链接无法在我的应用程序中打开,应用程序甚至不会尝试https://mycomputer.local/.well-known/apple-app-site-association从本地 Web 服务器请求文件(我让 Web 服务器在请求时打印一条调试消息,但仅当我手动加载时才会打印该消息)来自网络浏览器)。
这是我已经完成/检查过的事情的列表:
applinks:mycomputer.local?mode=developer我也尝试过IP地址)https://mycomputer.local/.well-known/apple-app-site-association从所有涉及的设备访问该 URL,即我的计算机、模拟器中的 Safari、真实 iPhone 上的 Safari(所有设备都连接到本地网络并成功显示我的 JSON 文件)。如上所述,我几乎可以排除问题在于 JSON 文件本身,因为我可以证明设备甚至没有访问它。我是否遗漏了什么或误解了这个概念?
我有一个while循环,运行了很多秒,这就是为什么我想在该过程中更新进度条(NSProgressIndicator),但它只在循环完成后更新一次.顺便说一下,如果我想要更新标签文本,也会发生同样的情况.
我相信,我的循环会阻止该应用程序的其他事情发生.必须有另一种技术.这与线程有什么关系吗?我是在正确的轨道上吗?有人可以给我一个简单的例子,如何"优化"我的应用程序?
我的应用程序是一个Cocoa应用程序(Xcode 3.2.1),我的这两种方法Example_AppDelegate.m:
// This method runs when a start button is clicked.
- (IBAction)startIt:(id)sender {
[progressbar setDoubleValue:0.0];
[progressbar startAnimation:sender];
running = YES; // this is a instance variable
int i = 0;
while (running) {
if (i++ >= processAmount) { // processAmount is something like 1000000
running = NO;
continue;
}
// Update progress bar
double progr = (double)i / (double)processAmount;
NSLog(@"progr: %f", progr); // Logs values between 0.0 and 1.0
[progressbar setDoubleValue:progr];
[progressbar … 为了做到空间查询MongoDB中的文档与位置(有2d或2dsphere地理空间指数)应该是这个样子:
{
_id: …,
loc: {
type: "Point",
coordinates: [ <longitude>, <latitude> ]
}
}
Run Code Online (Sandbox Code Playgroud)
我是Scala,ReactiveMongo和Play Framework的新手,但在我看来,使用这样一个位置的一个明显方法是通过一个案例类:
case class Point(lon: Double, lat: Double)
Run Code Online (Sandbox Code Playgroud)
网站的API处理的JSON表示应该类似于:
{
_id: …
loc: [ <longitude>, <latitude> ]
}
Run Code Online (Sandbox Code Playgroud)
现在,我无法弄清楚如何告诉我的ReactiveMongo模型在这些格式之间进行序列化/反序列化.
我的控制器看起来像这样:
package controllers
import play.api._
import play.api.mvc._
import play.api.libs.json._
import scala.concurrent.Future
// Reactive Mongo imports
import reactivemongo.api._
import scala.concurrent.ExecutionContext.Implicits.global
// Reactive Mongo plugin
import play.modules.reactivemongo.MongoController
import play.modules.reactivemongo.json.collection.JSONCollection
object Application extends Controller with MongoController {
def collection: JSONCollection = db.collection[JSONCollection]("test")
import play.api.data.Form
import …Run Code Online (Sandbox Code Playgroud)