【问题标题】:Play Framework Scala tuple in view在视图中播放框架 Scala 元组
【发布时间】:2014-04-11 06:22:47
【问题描述】:

我正在尝试比较两个 Seq 字符串,这是我使用 Apache LDAP API 和 Play 获得的! Scala 框架。 几天后,我没有想法了。 这是开始:

@(compares:Seq[Compare] , compares1:Seq[Compare], compareForm: Form[(String, String)])(隐式请求:Request[Any])

@import helper._

@main("管理工具", request.uri){

我有两个交互 - 如何比较它们?

@for(compare <- compares) {
    <td>@for(group <- compare.memberOf) {
        <li style="list-style-type: none;">@group.replaceAll(",(.*)","").replaceAll("(.*)=","")</li>
    }</td>
}
@for(compare1 <- compares1) {
    <td>@for(group1 <- compare1.memberOf) {
        <li style="list-style-type: none;">@group1.replaceAll(",(.*)","").replaceAll("(.*)=","")</li>
    }</td>
}   

【问题讨论】:

  • “如何比较它们”是什么意思?你想看看它们的长度是否相同?有相同的价值观吗?如果在比较两个列表时需要执行一些逻辑,则应该在视图以外的地方执行此操作(例如在 Controller 或 Controller 委托给的某些服务中)。

标签: scala playframework-2.0


【解决方案1】:

我知道这可能是一个迟到的答案,但我当时设法解决了这个问题。 代码可能有点脏,但我希望它对某人有用。

模型部分:

def intersection(c1:Seq[String], c2:Seq[String]): Seq[String] = {
    (Set(c1: _*) & Set(c2: _*)).toSeq
}

控制器部分:

compareForm.bindFromRequest.fold(
hasErrors = {errors => BadRequest(views.html.compares.index(compareForm, username, User.find(username)))},
success = { ldapName => 
  val leftUser = Compare.findAll(ldapName._1)
  val rightUser = Compare.findAll(ldapName._2)
  val intersection = Compare.intersection(leftUser.memberOf,rightUser.memberOf) 
  val rightLacking: Seq[String] = (leftUser.memberOf.toSet -- intersection.toSet).toList.map(_.toString).sorted      
  val leftLacking: Seq[String] = (rightUser.memberOf.toSet -- intersection.toSet).toList.map(_.toString).sorted
  val bothOk: Seq[String] = (intersection.toSet).toList.sorted
  Ok(views.html.compares.list(leftUser, rightUser, rightLacking, leftLacking, bothOk, compareForm, username, User.find(username)))
}  )

问候!

【讨论】:

    猜你喜欢
    • 2014-01-12
    • 2015-08-03
    • 2013-09-22
    • 2015-06-09
    • 2013-07-11
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多