标签: playframework

理解Scala中的隐式

我正在通过Scala playframework教程,我遇到了这段令我困惑的代码片段:

def newTask = Action { implicit request =>
taskForm.bindFromRequest.fold(
        errors => BadRequest(views.html.index(Task.all(), errors)),
        label => {
          Task.create(label)
          Redirect(routes.Application.tasks())
        } 
  )
}
Run Code Online (Sandbox Code Playgroud)

所以我决定调查并发现这篇文章.

我还是不明白.

这有什么区别:

implicit def double2Int(d : Double) : Int = d.toInt
Run Code Online (Sandbox Code Playgroud)

def double2IntNonImplicit(d : Double) : Int = d.toInt
Run Code Online (Sandbox Code Playgroud)

除了明显的事实,他们有不同的方法名称.

implicit什么时候应该使用?为什么?

syntax scala keyword playframework

293
推荐指数
5
解决办法
11万
查看次数

如何更改Play执行"run"命令时使用的默认端口(9000)?

在播放控制台上发出"run"命令时,如何更改播放框架中播放框架使用的默认端口.

这适用于playframework 2.0 beta.

在命令行或application.conf中使用http.port配置参数似乎没有任何效果:

C:\dev\prototype\activiti-preso>play run --http.port=8080
[info] Loading project definition from C:\dev\prototype\activiti-preso\project
[info] Set current project to activiti-preso (in build file:/C:/dev/prototype/activiti-preso/)


Windows, really? Ok, disabling colors.

--- (Running the application from SBT, auto-reloading is enabled) ---

[error] org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:9000
[error] Use 'last' for the full log.
Run Code Online (Sandbox Code Playgroud)

port playframework playframework-2.0

204
推荐指数
8
解决办法
14万
查看次数

错误:参数不是函数,未定义

使用AngularJS和Scala Play,我收到了这个错误.

错误:参数'MainCtrl'不是函数,未定义

我正在尝试创建一个包含一周中几天的表格.

请看一下我的代码.我检查了控制器的名称,但这似乎是正确的.注意:此SO 答案中使用的代码

index.scala.html

@(message: String)

@main("inTime") {

<!doctype html>
<html lang="en" ng-app>
    <head>
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
    </head>
<div ng-controller="MainCtrl">
    <table border="1">
    <tbody ng-repeat='(what,items) in data'>
      <tr ng-repeat='item in items'>
        <td ngm-if="$first" rowspan="{{items.length}}">{{what}}</td>
        <td>{{item}}</td>
      </tr>
    </tbody>
  </table>
</div>
</html> 
}
Run Code Online (Sandbox Code Playgroud)

MainCtrl.js

(function() {
    angular.module('[myApp]', []).controller('MainCtrl', function($scope) {
        $scope.data = {
            Colors: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
        }
    });
}());
Run Code Online (Sandbox Code Playgroud)

playframework angularjs

119
推荐指数
5
解决办法
21万
查看次数

RESTful on Play!骨架

我们正在计划一个主要为移动应用提供内容的项目,但需要有一个网站.

我的问题是使用Jersey或Restlet为我们的移动应用程序开发REST API是否有意义,然后使用Play!为网站服务.

或者只是使用Play更有意义!做到这一切?如果是这样,如何使用Play进行REST!框架?

java rest jersey restlet playframework

117
推荐指数
4
解决办法
7万
查看次数

在Play framework 2.0中使用MySQL数据库所需的步骤

我是Play框架的新手.我正在尝试将MySQL数据库配置为与Play Ebeans一起使用的数据源.

请问您能解释一下使用Play 2.0框架配置MySQL所需的步骤(例如,下载驱动程序,添加依赖项等).

java playframework ebean playframework-2.0

91
推荐指数
6
解决办法
8万
查看次数

使用嵌入式容器部署war文件与可执行jar的建议

java空间中似乎有一种趋势,即不再以war文件(或ear文件)的形式将java Web应用程序部署到java servlet容器(或应用程序服务器),而是将应用程序打包为可执行jar.像jetty这样的嵌入式servlet/HTTP服务器.我的意思是,更新的框架影响新应用程序的开发和部署方式,而不是如何将应用程序交付给最终用户(因为,例如,我知道Jenkins使用嵌入式容器,非常容易抓住和去).采用可执行jar选项的框架示例: Dropwizard,Spring BootPlay (它不是在servlet容器上运行,而是嵌入了HTTP服务器).

我的问题是,来自我们已经将我们(直到这一点,主要是Struts2)应用程序部署到单个tomcat应用程序服务器的环境,如果我们计划使用嵌入式容器方法,需要做出哪些更改,最佳实践或注意事项?目前,我们在单个tomcat服务器上运行大约10个自行开发的应用程序,对于这些小型应用程序,共享资源并在一台服务器上进行管理的能力很不错.我们的应用程序无意分发给最终用户以在其环境中运行.但是,如果我们决定利用更新的Java框架,那么这种方法会改变吗?越来越多地使用云部署(例如Heroku)刺激了对可执行jar的转变?

如果您有使用Play风格的部署管理多个应用程序而不是单个应用程序服务器上的传统war文件部署的经验,请分享您的见解.

java war playframework dropwizard spring-boot

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

玩!框架使用<lot>的静态

哇,玩!框架有很多静态方法.在我上学的地方,我们被告知永远不会使用任何静力学,但玩!使用它就像没有明天一样.那是不是很好?如果是这样,为什么?

我们(7个人和我)正计划使用Play!涉及Web应用程序的项目框架.我们决定玩Play!因为它看起来很有趣,我们所有人都已经知道Java并且任务很难,所以我们想要专注于实际的任务,而不是学习如何用不同的语言编程.

我们总是说,但是,永远不要用"静在我们开发的任何Java程序,但是当我看着玩!......好吧......大约一半的方法都是静态的.</夸张>

我想,至少,我们可以使用单例对象(通过使用Scala,例如^^)来编程我们的项目,但我非常担心框架本身实际上有多少静态.

那么,我应该关注这个吗?玩的方式!开发人员编程使它成为所有这些静态不会造成问题的?

(例如,这个主题有一个关于为什么要不惜一切代价避免静态成员的咆哮.)

java static playframework playframework-1.x

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

在Play 2.3.x应用程序中使用sbt-rjs从WebJars优化JS

是否有可能通过WebJars使用我的应用程序中包含的Play 2.3应用程序concat/optimize JS(使用sbt-rjs)?
举一个具体的例子:我正在尝试创建一个core.js模块,其中包含在单个文件中连接和缩小的所有第三方库,然后可以将其指定为其他AMD模块的依赖项.
通过WebJars包含这些库而不是"手动"下载源会很棒.

这是我的build.sbt文件中的一个片段,我在其中指定了我的webjar依赖项:

// Webjars
libraryDependencies ++= Seq(
  "org.webjars" % "requirejs" % "2.1.15",
  "org.webjars" % "underscorejs" % "1.7.0",
  "org.webjars" % "jquery" % "1.11.1",
  "org.webjars" % "bootstrap" % "3.3.1" exclude("org.webjars", "jquery"),
  "org.webjars" % "angularjs" % "1.3.4-1" exclude("org.webjars", "jquery")
)
Run Code Online (Sandbox Code Playgroud)

这是我的requireJS构建配置

requirejs.config({
  baseUrl: '/assets/javascripts',
  shim: {
    'jsRoutes': {
      deps: [],
      exports: 'jsRoutes'
    },
    'angular': {
      deps: ['jquery'],
      exports: 'angular'
    },
    'underscore': {
      exports: '_'
    },
    'angularRoute': ['angular'],
    'angularCookies': ['angular'],
    'bootstrap': ['jquery']
  },
  paths: {
    'requirejs': …
Run Code Online (Sandbox Code Playgroud)

playframework requirejs webjars sbt-web sbt-rjs

74
推荐指数
1
解决办法
1901
查看次数

如何在Play框架中处理可选的查询参数

假设我在Scala中已经运行了一个基于Play 2.0框架的应用程序,它可以提供以下URL:

HTTP://本地主机:9000 /生日

它以所有已知生日的列表作出回应

我现在想通过添加使用可选的"from"(日期)和"to"请求参数限制结果的功能来增强此功能,例如

HTTP://本地主机:9000 /生日从= 20120131&到= 20120229?

(此处的日期解释为yyyyMMdd)

我的问题是如何使用Scala处理Play 2.0中的请求参数绑定和解释,特别是考虑到这两个参数都应该是可选的.

这些参数应该以某种方式在"路线"规范中表达吗?或者,响应的Controller方法应该以某种方式从请求对象中分离出params吗?还有另一种方法吗?

scala playframework playframework-2.0

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

将类型与数据构造函数关联的ADT编码有什么问题?(比如Scala.)

在Scala中,代数数据类型被编码为sealed一级类型层次结构.例:

-- Haskell
data Positioning a = Append
                   | AppendIf (a -> Bool)
                   | Explicit ([a] -> [a]) 
Run Code Online (Sandbox Code Playgroud)
// Scala
sealed trait Positioning[A]
case object Append extends Positioning[Nothing]
case class AppendIf[A](condition: A => Boolean) extends Positioning[A]
case class Explicit[A](f: Seq[A] => Seq[A]) extends Positioning[A]
Run Code Online (Sandbox Code Playgroud)

随着case classES和case objectS,斯卡拉产生了一堆东西一样equals,hashCode,unapply(通过模式匹配使用)等这使我们的许多关键特性和传统的ADT功能.

但是有一个关键的区别 - 在Scala中,"数据构造函数"有自己的类型.比较以下两个例子(从相应的REPL复制).

// Scala

scala> :t Append
Append.type

scala> :t AppendIf[Int](Function const true)
AppendIf[Int]

-- Haskell

haskell> :t Append …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming scala playframework argonaut

68
推荐指数
1
解决办法
2311
查看次数