我在Java中使用play框架.我想检索在POST请求中发送到播放服务器的整个请求主体.我怎样才能找回它?
也许我只是忽略了一些显而易见的东西,但我无法弄清楚如何将一个表单字段绑定到一个Play控制器中的double.
例如,假设这是我的模型:
case class SavingsGoal(
timeframeInMonths: Option[Int],
amount: Double,
name: String
)
Run Code Online (Sandbox Code Playgroud)
(忽略我使用双倍的钱,我知道这是一个坏主意,这只是一个简化的例子)
我想像这样绑定它:
object SavingsGoals extends Controller {
val savingsForm: Form[SavingsGoal] = Form(
mapping(
"timeframeInMonths" -> optional(number.verifying(min(0))),
"amount" -> of[Double],
"name" -> nonEmptyText
)(SavingsGoal.apply)(SavingsGoal.unapply)
)
}
Run Code Online (Sandbox Code Playgroud)
我意识到number
帮助程序只适用于int,但我认为使用of[]
可能允许我绑定一个double.但是,我得到了一个编译器错误:
Cannot find Formatter type class for Double. Perhaps you will need to import
play.api.data.format.Formats._
Run Code Online (Sandbox Code Playgroud)
这样做没有用,因为API中没有定义双格式化程序.
这只是一个很长的方式来询问在Play中将表单字段绑定到double的规范方法是什么?
谢谢!
编辑:4e6指出了我正确的方向.这是我用他的帮助做的事情:
使用他的链接中的代码段,我将以下内容添加到app.controllers.Global.scala:
object Global {
/**
* Default formatter for the `Double` type.
*/
implicit def doubleFormat: Formatter[Double] = new Formatter[Double] …
Run Code Online (Sandbox Code Playgroud) 在阅读了react
Scala中的演员使用之后,我认为react
在没有多个react
待定的情况下会分享相同的线程.似乎并非如此.
import scala.actors.Actor
import scala.actors.Actor._
class SleepyReactor extends Actor {
def act() {
loop {
react {
case x => {
println("reacting to %s on thread %s".format(x, Thread.currentThread.getName))
Thread.sleep(1000)
println("done with " + x)
}
}
}
}
}
val sleepyOne = new SleepyReactor
sleepyOne.start
sleepyOne ! "first" // runs on thread-5
// wait until completion
sleepyOne ! "second" // runs on thread-3
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么这些react
是在不同的线程上运行,以及何时为一个演员创建一个新的线程react
?
我读到某个地方react
是基于事件的,我认为这意味着"反应行动者"共享一个线程,如果一个人"反应",其他"反应行动者"将排队,直到第一个完成.我现在认为我错了.这是如何工作的,它与收到的有何不同?
我正在尝试建立一个开发PostgreSQL服务器.它正在运行,我可以从命令行创建角色,表等.但是当我尝试使用Play应用evolution时,我收到以下错误:
org.postgresql.util.PSQLException: FATAL: sorry, too many clients already
Run Code Online (Sandbox Code Playgroud)
我能够连接,如果我故意输入语法错误,它会返回语法错误,所以我知道Play能够连接到数据库.但是,在演变成功应用后,我得到上面显示的错误.
我对PostgreSQl管理并不十分精通,所以我不确定问题是Play还是我的PostgreSQL安装.我刚刚在运行Mountain Lion的Mac上使用Heroku的Postgres.app安装它.
这是写入控制台的内容:
! @6cnb0blpp - Internal server error, for request [GET /] ->
play.api.db.evolutions.InvalidDatabaseRevision: Database 'default' needs evolution! [An SQL script need to be run on your database.]
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1$$anonfun$apply$1.apply$mcV$sp(Evolutions.scala:427) ~[play_2.9.1.jar:2.0.4]
at play.api.db.evolutions.EvolutionsPlugin.withLock(Evolutions.scala:448) ~[play_2.9.1.jar:2.0.4]
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:414) ~[play_2.9.1.jar:2.0.4]
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:412) ~[play_2.9.1.jar:2.0.4]
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) ~[scala-library.jar:0.11.3]
at scala.collection.immutable.List.foreach(List.scala:45) ~[scala-library.jar:0.11.3]
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 10. Exception: null
[error] c.j.b.h.AbstractConnectionHook - Failed to acquire …
Run Code Online (Sandbox Code Playgroud) 下午好,
我目前正在使用SlickJS Carousel,我正在尝试使用该unslick();
代码段在窗口宽度大于375时删除多个项目.
我可以看到调整大小功能的工作方式,当窗口大小小于375 slick();
轮播显示时没有任何问题.
如果有人能看到什么出错,请告诉我.
谢谢.
JS
$(document).ready(function () {
// Header Slider
$('.touchslider_one').slick({
autoplay: true,
infinite: true,
speed: 1500,
autoplaySpeed: 3000,
dots: false,
slidesToShow: 1,
slidesToScroll: 1,
fade: true,
cssEase: 'linear',
});
onresize();
$(window).resize(function () {
onresize();
});
});
function onresize(){
checkWidth();
}
function checkWidth() {
if ($(window).width() < 376 ) {
// Boxes
$('.touchslider_fourth').slick({
autoplay: false,
infinite: true,
speed: 1500,
adaptiveHeight: true,
dots: false,
slidesToShow: 1,
slidesToScroll: 1,
cssEase: 'linear'
});
// …
Run Code Online (Sandbox Code Playgroud) 我在新创建的Play 2.1.3应用程序上收到此错误.我正在运行Java 7u25.我创建了新的应用程序,并在应用程序目录中使用"play run"运行它.
Unexpected exception
Compilation failed without reporting any problem!?
No source available, here is the exception stack trace:
->sbt.compiler.CompileFailed:
sbt.compiler.JavaCompiler$$anon$1.compile(JavaCompiler.scala:59)
sbt.compiler.JavaTool$class.apply(JavaCompiler.scala:26)
sbt.compiler.JavaCompiler$$anon$1.apply(JavaCompiler.scala:51)
sbt.compiler.JavaCompiler$class.compile(JavaCompiler.scala:17)
sbt.compiler.JavaCompiler$$anon$1.compile(JavaCompiler.scala:51)
sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileJava$1$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(AggressiveCompile.scala:83)
sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileJava$1$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(AggressiveCompile.scala:83)
sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileJava$1$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(AggressiveCompile.scala:83)
sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:101)
sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileJava$1$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(AggressiveCompile.scala:82)
sbt.classfile.Analyze$.apply(Analyze.scala:85)
sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileJava$1$1.apply$mcV$sp(AggressiveCompile.scala:81)
sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileJava$1$1.apply(AggressiveCompile.scala:81)
sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileJava$1$1.apply(AggressiveCompile.scala:81)
sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:101)
sbt.compiler.AggressiveCompile$$anonfun$4.compileJava$1(AggressiveCompile.scala:80)
sbt.compiler.AggressiveCompile$$anonfun$4.apply(AggressiveCompile.scala:88)
sbt.compiler.AggressiveCompile$$anonfun$4.apply(AggressiveCompile.scala:60)
sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:24)
sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:22)
sbt.inc.Incremental$.cycle(Incremental.scala:45)
sbt.inc.Incremental$.compile(Incremental.scala:29)
sbt.inc.IncrementalCompile$.apply(Compile.scala:20)
sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:96)
sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:44)
sbt.compiler.AggressiveCompile.apply(AggressiveCompile.scala:31)
sbt.Compiler$.apply(Compiler.scala:79)
sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:572)
sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:572)
sbt.Scoped$$anonfun$hf2$1.apply(Structure.scala:578)
sbt.Scoped$$anonfun$hf2$1.apply(Structure.scala:578)
scala.Function1$$anonfun$compose$1.apply(Function1.scala:49)
sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311)
sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311)
sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:41)
sbt.std.Transform$$anon$5.work(System.scala:71)
sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232)
sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232)
sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
sbt.Execute.work(Execute.scala:238)
sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232)
sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232)
sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
java.util.concurrent.FutureTask.run(Unknown Source)
java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
java.util.concurrent.FutureTask.run(Unknown Source)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) …
Run Code Online (Sandbox Code Playgroud) 我正在使用ScalaTest 2.1.4和SBT 0.13.5.我有一些长期运行的测试套件,如果单个测试失败可能需要很长时间才能完成(多JVM Akka测试).如果其中任何一个失败,我希望整个套件中止,否则套件可能需要很长时间才能完成,特别是在我们的CI服务器上.
如果套件中的任何测试失败,如何配置ScalaTest以中止套件?
我有一个简短的Bash脚本,可以对我的Scaladoc注释进行查找和替换,以生成指向第三方库的外部文档的链接.我希望每次使用doc
任务生成Scaladocs时都会运行此脚本.
我怎样才能做到这一点?
如何更有效地执行以下操作:
myoptionList.filter(_.isDefined).map(_.get)
Run Code Online (Sandbox Code Playgroud)
这需要两次迭代时间,有没有更好的方法来做到这一点?