小编Som*_*tik的帖子

光滑左外连接获取整个连接行作为选项

我的加入看起来像这样:

def byIdWithImage = for {
    userId <- Parameters[Long]
    (user, image) <- Users leftJoin RemoteImages on (_.imageId === _.id) if user.id === userId
} yield (user, image)
Run Code Online (Sandbox Code Playgroud)

但是当user.imageId为null时,浮动在运行时失败

[SlickException:读取列RemoteImage.url的NULL值]

将收益率改为

} yield (user, image.?)
Run Code Online (Sandbox Code Playgroud)

给我一个编译时异常,它只适用于各个列

找不到scala.slick.lifted.TypeMapper [image.type]类型的证据参数的隐含值

有没有不同的方法来完成我在这里尝试做的事情?(在单个查询中)

scala left-join option slick

11
推荐指数
2
解决办法
4012
查看次数

如何处理playframework中的异常2异步块(scala)

我的控制器动作代码如下所示:

  def addIngredient() = Action { implicit request =>
    val boundForm = ingredientForm.bindFromRequest
    boundForm.fold(
      formWithErrors => BadRequest(views.html.Admin.index(formWithErrors)),
      value => {
        Async {
          val created = Service.addIngredient(value.name, value.description)
          created map { ingredient =>
            Redirect(routes.Admin.index()).flashing("success" -> "Ingredient '%s' added".format(ingredient.name))
          }

          // TODO on exception do the following
          // BadRequest(views.html.Admin.index(boundForm.copy(errors = Seq(FormError("", ex.getMessage())))))
        }
      })
  }
Run Code Online (Sandbox Code Playgroud)

我的Service.addIngredient(...)返回一个Promise [Ingredient],但也可以抛出一个自定义的ValidationException.抛出此异常时,我想返回注释代码.

目前页面呈现为500,在日志中我有:

玩 - 等待承诺,但得到一个错误:名称'test'的成分已经存在.services.ValidationException:名称为'test'的成分已存在.

两个问题:

  • 从我的服务返回此异常是一个坏主意,是否有更好/更多的scala方法来处理这种情况?
  • 我如何捕获异常?

validation scala exception-handling playframework-2.0

10
推荐指数
1
解决办法
3707
查看次数

在Java中保存用户设置/数据库/缓存...(在每个操作系统上)

我的Java应用程序正在"user.home"中保存内容,但在Windows上,这似乎不是保存应用程序信息的正确途径(正如朋友告诉我的那样).另一种选择是使用首选项api,但是无法使用首选项api设置hsqldb位置.此外,我希望所有文件在同一文件夹(本地数据库,配置,缓存,...)中可用.

我正在寻找一些示例代码或一个处理特定于os的东西的框架.

java settings operating-system configuration-files

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

Play2找不到我对JSON的隐式读取或格式

这是我的搜索对象:

package models.helper
import play.api.libs.json.Format
import play.api.libs.json.JsValue
import play.api.libs.json.JsObject
import play.api.libs.json.JsString

case class Search (name: String, `type`:String){

  implicit object SearchFormat extends Format[Search] {
    def reads(json: JsValue): Search = Search(
      (json \ "name").as[String],
      (json \ "type").as[String]
    )

    def writes(s: Search): JsValue = JsObject(Seq(
        "name" -> JsString(s.name),
        "type" -> JsString(s.`type`)
    ))  
  }
}
Run Code Online (Sandbox Code Playgroud)

我在尝试使用WS调用web服务时尝试使用此类:

val search = response.json.as[Search]
Run Code Online (Sandbox Code Playgroud)

但scala编译器一直在抱怨这条线:

找不到类型models.helper.Search的Json反序列化器.尝试为此类型实现隐式读取或格式.

谁能告诉我我做错了什么?

json scala playframework-2.0 playframework-json

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

如何让用户在playframework 2中切换语言

在我的播放1.x控制器中我有这个:

public static void language(final String language){
    Lang.change(language);
    Header referer = request.headers.get("referer");
    if(referer == null){
        index();
    }else{
        redirect(referer.value());
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在播放2.x中做同样的事情,但我的印象是功能不再可用.这就是我到目前为止所拥有的

  def language(language:String) = Action { implicit request =>

    // TODO change language

    val referer = request.headers.get("referer")
    referer.map{ referer =>
      Redirect(referer, FOUND);
    }getOrElse(
      Ok(views.html.index())
    )
  }
Run Code Online (Sandbox Code Playgroud)

scala internationalization playframework-2.0

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

如何使用Playframework 2.0实现复数和其他扩展

在playframework 1.x中,曾经有一些用于模板引擎的捆绑java扩展:http://www.playframework.org/documentation/1.2.3/javaextensions

我在playframework 2.0中寻找相同的功能.例如,我该怎么做?

colour${['red', 'green', 'blue'].pluralize()} 
Run Code Online (Sandbox Code Playgroud)

我现在正在做这件事:

We have @colours.size colour@if(colours.size > 0){s}
Run Code Online (Sandbox Code Playgroud)

这必须是更清洁,更可重复使用的方式吗?

templates template-engine scala playframework playframework-2.0

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

如何检测scala executioncontext耗尽?

我遇到了Playframework应用程序不时没有响应的问题,我想在运行时检测到这一点,并记录当前在耗尽的执行上下文中运行的内容的日志信息.

实现这一目标的最佳策略是什么?我想过将小的runnables发布到执行上下文中,如果它们没有及时执行,我会记录一个警告.这个最大等待时间当然应该是可配置的.例如,主Web执行上下文永远不应被阻止超过1秒,但后台db执行上下文可能允许30秒阻塞.

有人必须先做过这件事吗?

相关信息:http: //www.playframework.com/documentation/2.2.x/ThreadPools

scala threadpool akka playframework executioncontext

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

Android模拟器崩溃日志

我正在使用 jenkins 和 android 插件,但似乎我的模拟器在构建过程中死掉了。logcat 到达某个活动开始时的位置,但随后就不再有任何活动了。所以它显然没有正确关闭。我可以启用其他日志来调试此问题吗?可能是模拟器内存​​不足造成的。

crash android emulation jenkins

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

如何使用Playframework scala绑定数组表单字段

我必须处理的形式有这样的:

<label for="features_1">
  <input type="checkbox" id="features_1" name="features[]" value="4"> foo
</label>
<label for="features_2">
  <input type="checkbox" id="features_2" name="features[]" value="8"> bar
</label>
Run Code Online (Sandbox Code Playgroud)

我可以这样得到阵列

request.body.asFormUrlEncoded.get("features[]")
Run Code Online (Sandbox Code Playgroud)

当两个项目都被选中时,它会给我 List(4, 8)

但是当我尝试将其绑定在一个表单中时

case class MyFeatures(features: Seq[Long])

val myForm = Form (
    mapping(
      "features" -> seq(longNumber)
    )(MyFeatures.apply)(MyFeatures.unapply)
)
Run Code Online (Sandbox Code Playgroud)

我总是得到一个空序列,与"features []"相同

编辑

以上示例实际上有效,问题出在其他地方.绑定播放时将要素转换为要素[0] = 4和要素[1] = 8,然后在seq(...)或列表(...)映射中正确处理

forms binding scala playframework playframework-2.0

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

如何循环scala模板中的flash元素?

我很难尝试将一些模板从1.2.4翻译成2.0.

到目前为止,我设法遍历所有的flash元素,但我想分别获取Key和Message(@msgKey包含一个列表,我不知道如何拆分它:/)=> (success, Your data has been updated).

一点点的帮助将不胜感激!:)

这是原始代码:

#{if flash.data.size() > 0}
    #{list items:flash.data, as:'msg'}
        #{if msg.key.substring(0, 4).equals('info')}#{set msg_type:'info' /}#{/if}
        #{if msg.key.substring(0, 4).equals('succ')}#{set msg_type:'success' /}#{/if}
        #{if msg.key.substring(0, 4).equals('warn')}#{set msg_type:'warning' /}#{/if}
        #{if msg.key.substring(0, 4).equals('erro')}#{set msg_type:'error' /}#{/if}
        <div class="alert alert-${msg_type}" data-dismiss="alert">  
            <a title="Close that message" class="close">×</a>
            ${msg.value.raw()}
        </div>
    #{/list}
#{/if}
Run Code Online (Sandbox Code Playgroud)

这是新的:

@if(!flash.isEmpty()) {
    @for(msgKey <- flash) { 
        <div class="alert alert-@msgKey" data-dismiss="alert">      
            <a title="@Messages("misc.message.close")" class="close">×</a>
            @msgKey
        </div>
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助,我感谢!

templates scala playframework-2.0

4
推荐指数
1
解决办法
740
查看次数