小编Mic*_*jac的帖子

如何在play(2.3)框架内的Java控制器代码中从String变量构造Html对象

刚刚开始使用play框架,我正在尝试理解java应用程序代码和基于scala的模板框架之间的交互(注意:到目前为止我对Scala一无所知,除了它是另一个编译为JVM上的字节码的语言,以及您的Scala和Java类可以交互的语言.

我有一个test1.scala.html模板,如下所示:

@(title: String)(content: Html)

<!DOCTYPE html>

<html>
    <head>
        <title>@title</title>
    </head>
    <body>
        @content
    </body> </html>
Run Code Online (Sandbox Code Playgroud)

从顶行可以看出,模板需要一个String和一个Html参数,但我无法弄清楚如何从Java调用者代码构造Html参数!

我在我的控制器类中尝试了一些变体:

return ok(test1.render("My Title","It <em>finally</em> works!"));
Run Code Online (Sandbox Code Playgroud)

显然这很失败,因为第二个参数是String而不是Html,所以我的参数不匹配.(有一个运行时错误: actual argument String cannot be converted to Html by method invocation conversion- 这是有道理的,但我希望这里有一些魔法.:))

所以我尝试从String中创建一些Html,认为这可能是包中的某个帮助类,这可能"只是工作":

return ok(test1.render("My Title",new Html("It <em>finally</em> works!")));
Run Code Online (Sandbox Code Playgroud)

这不会编译,因为javac找不到Html类.好,可以.扫描播放文档,似乎有一个play.api.templates.Html类(用Scala编写)带有一个带String的构造函数,所以我尝试完整的包限定名:

return ok(test1.render("My Title",new play.api.templates.Html("It <em>finally</em> works!")));
Run Code Online (Sandbox Code Playgroud)

这也不会编译:我在包play.api.templates中找不到'Html'的符号.

那么:什么是让我将我的String(其中包含HTML片段)转换为我可以传递到模板的HTML对象的神奇酱油?

java playframework playframework-2.3

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

全球onStart on Play Framework 2.3.7无效?

对不起,如果这个问题变得愚蠢,但我根本找不到我的错误,我在SO和其他网站上已经检查了很多帖子.我使用Java设置了一个Play 2.3.7项目.我在app目录下的common包中创建了一个Global.java文件.在该文件中我覆盖onStart(和其他钩子),但我没有让它们工作.他们根本就不执行.这是Global.java文件:

package common;

import play.Application;
import play.GlobalSettings;
import play.Logger;

public class Global extends GlobalSettings {

    @Override
    public void beforeStart(Application application) {
        Logger.error("good bye cruel world");
        super.beforeStart(application);
        throw new RuntimeException("WTF");
    }

    @Override
    public void onStart(Application application) {
        Logger.error("good bye cruel world");
        super.onStart(application);
        throw new RuntimeException("WTF");
    }

    @Override
    public void onStop(Application application) {
        Logger.error("good bye cruel world");
        super.onStop(application);
        throw new RuntimeException("WTF");
    }
}
Run Code Online (Sandbox Code Playgroud)

在application.conf中,这是相关部分,默认情况下注释:

# Define the common.Global object class for this application.
# Default to common.Global in the root package. …
Run Code Online (Sandbox Code Playgroud)

java scala sbt playframework playframework-2.3

8
推荐指数
2
解决办法
3621
查看次数

拆分使用Prepend [A,B]连接的HList

我基本上寻找类型类的反面Prepend[A, B].

如果我有类似的东西:

type A = String :: Int :: HNil
type B = Boolean :: Double :: HNil

val a: A = "a" :: 1 :: HNil
val b: B = false :: 2.1 :: HNil

scala> val ab = a ++ b
ab: shapeless.::[String,shapeless.::[Int,shapeless.::[Boolean,shapeless.::[Double,shapeless.HNil]]]] = a :: 1 :: false :: 2.1 :: HNil
Run Code Online (Sandbox Code Playgroud)

我有一个HList a类型AHList b类型B,我可以找到一个prepend: Prepend[A, B]这样我可以连接它们a ++ b.

但如果我有一个HList ab …

scala shapeless

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

何时使用TrieMap是否合适?

我一直在阅读一些帖子,并想知道是否有人可以提出TrieMap何时比使用HashMap更可取的情况.

基本上什么架构决策应该激励使用TrieMap?

scala scala-collections

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

如何在Play Framework中进行详细编译?

在Play框架2.0.8中使用Java可以进行详细的编译吗?

目前我只看到:

[info]编译131个Scala源和10个Java源代码到......

我正在尝试确定更改控制器时为什么会重新编译这么多文件的原因.

提前致谢

java scala sbt playframework playframework-2.0

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

Typesafe Activator NoSuchMethodError

我在运行Typesafe Activator时遇到问题.我在1.1.3版本上运行了一段时间.这是一个Java Play项目.最近它自动更新到1.2.1并且已停止工作.首先,我的Java版本是1.7.0_25-b17.我正在运行Windows 8.1并从PowerShell运行激活器.

这是错误输出:

The system cannot find the file C:\Users\[my name]\.activator\1.2.3\activatorconfig.txt.
The system cannot find the file C:\Users\[my name]\.activator\activatorconfig.txt.
Checking for a newer version of Activator (current version 1.2.1)...
java.lang.NoSuchMethodError: scala.util.matching.Regex.unapplySeq(Ljava/lang/CharSequence;)Lscala/Option;
        at activator.ActivatorLauncher.downloadLatestVersion(ActivatorLauncher.scala:164)
        at activator.ActivatorLauncher.checkForUpdatedVersion(ActivatorLauncher.scala:206)
        at activator.ActivatorLauncher.run(ActivatorLauncher.scala:27)
        at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
        at xsbt.boot.Launch$.withContextLoader(Launch.scala:129)
        at xsbt.boot.Launch$.run(Launch.scala:109)
        at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:36)
        at xsbt.boot.Launch$.launch(Launch.scala:117)
        at xsbt.boot.Launch$.apply(Launch.scala:19)
        at xsbt.boot.Boot$.runImpl(Boot.scala:44)
        at xsbt.boot.Boot$.main(Boot.scala:20)
        at xsbt.boot.Boot.main(Boot.scala)
Error during sbt execution: java.lang.NoSuchMethodError: scala.util.matching.Reg
ex.unapplySeq(Ljava/lang/CharSequence;)Lscala/Option;
Run Code Online (Sandbox Code Playgroud)

这也是一个新的下载激活剂.每当我尝试运行激活器或激活器ui时就会发生这种情况.其他命令失败了类似的消息,除了激活器帮助,运行正常.有谁知道这里有什么问题吗?我错过了什么吗?只要我有JDK6 +,理论上Activator应该运行,对吗?我正在使用应该包含依赖项的版本,据我所知,丢失的方法实际上确实存在.由于我必须回到Play项目的工作,这真的让我感到高兴.

java scala playframework typesafe-activator

7
推荐指数
2
解决办法
2111
查看次数

Typesafe在SBT项目中将WS作为依赖项

从Play Framework 2.3.x开始,Play WS是一个依赖库.参考:

http://playframework.com/documentation/2.3.x/Migration23

如何将其包含在SBT项目中?

回答:

"com.typesafe.play" %% "play-ws" % "2.3.1"
Run Code Online (Sandbox Code Playgroud)

dependencies frameworks scala sbt playframework

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

playframework 2.3.4启动时出现java 8u25错误

我正在使用带有play2的java8,具有此配置.

name := """shipping"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava)

scalaVersion := "2.11.1"

libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  cache,
  javaWs,
  "org.apache.axis" % "axis" % "1.4",
  "net.sf.barcode4j" % "barcode4j" % "2.1",
  "xml-apis" % "xml-apis" % "1.4.01",
  "javax.xml" % "jaxrpc-api" % "1.1",
  "org.webjars" % "flot" % "0.8.0",
  "org.webjars" % "bootstrap" % "2.3.1",
  "commons-discovery" % "commons-discovery" % "0.4",
  "postgresql" % "postgresql" % "9.1-901.jdbc4",
  "wsdl4j" % "wsdl4j" % "1.6.2",
  "org.apache.xmlgraphics" % "fop" % "1.0"
)

javacOptions ++= Seq("-source", "1.8", "-target", …
Run Code Online (Sandbox Code Playgroud)

java playframework-2.3

7
推荐指数
2
解决办法
1085
查看次数

如何隐藏匿名函数中的多个参数?

如果我们有一个接受匿名函数A => B作为参数的方法,我们可以A在调用中隐式.

def impl(a: Int)(f: Int => Int): Int = f(a)

impl(a) { implicit z =>
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是我们可以使用具有多个参数的匿名函数来执行此操作吗?

def impl(a: Int, b: Int)(f: (Int, Int) => Int): Int = f(a, b)
Run Code Online (Sandbox Code Playgroud)

理想情况下,这将工作如下:

impl(1, 2) { implicit (a, b) => // wrong
    ...
}
Run Code Online (Sandbox Code Playgroud)

要么

impl(1, 2) { (implicit a, implicit b) => // also wrong
    ...
}
Run Code Online (Sandbox Code Playgroud)

我可以使用A => B => C相反的方法解决这个问题:

def impl(a: Int, b: Int)(f: Int => Int => Int): …
Run Code Online (Sandbox Code Playgroud)

scala

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

为什么这个部分应用程序不能编译?

下列:

val add = (a: Int, b: Int) => a + b 
Run Code Online (Sandbox Code Playgroud)

转换为:

object add extends Function2[Int, Int, Int] {
  def apply(a: Int, b: Int) = a + b
}
Run Code Online (Sandbox Code Playgroud)

val a1 = add(_: Int, 3)
Run Code Online (Sandbox Code Playgroud)

转换为:

object a1 extends Function1[Int, Int] {
  def apply(x: Int): Int = {
    add(x, 3)
  }
}
Run Code Online (Sandbox Code Playgroud)

但当我这样做时:

scala> val a2 = add _
a2: () => (Int, Int) => Int = <function0>
Run Code Online (Sandbox Code Playgroud)

然后调用a2,它会抛出一个错误:

scala> a2(1, 2) 
<console>:11: error: too many …
Run Code Online (Sandbox Code Playgroud)

scala

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