Html 用逗号分割字符串,然后将其存储在播放中的数组val中!+斯卡拉

Html 用逗号分割字符串,然后将其存储在播放中的数组val中!+斯卡拉,html,scala,playframework,split,playframework-2.0,Html,Scala,Playframework,Split,Playframework 2.0,我正在传递一份清单 errors.add(new ValidationError("Employee " + strId, "error.range," + strName +","+ intRange)); 这将构建一个字符串 "Employee1","error.format,FIRST NAME,20 我想用拆分消息字符串,并将其存储在scala模板或视图中的twirl中的数组变量中。我并不擅长scala代码,我不知道如何在scala模板中存储变量,也不知道拆分字符串的语法。是否有可以

我正在传递一份清单

errors.add(new ValidationError("Employee " + strId, "error.range," + strName +","+ intRange));
这将构建一个字符串

"Employee1","error.format,FIRST NAME,20
我想用拆分消息字符串,并将其存储在scala模板或视图中的twirl中的数组变量中。我并不擅长scala代码,我不知道如何在scala模板中存储变量,也不知道拆分字符串的语法。是否有可以在scala模板中执行此任务的代码?。多谢各位

<div id = "msg-menu" class = "msg-menu">
    @for((key, value) <- appModel.errors) {
        <div class="error-msg">
          <p>@key :
             @for(err <- value) {
                @for(error <- err.message.split(",")) {
                    @Messages(error)
                }
             }
          </p>
        </div>
    }
</div>
其中error0=error.range,error1=FIRST NAME,error2=20。在conf/message中,我将使用参数构建一条错误消息

error.range = Enter {0} in {1} characters or less.

变量在twirl中使用@defining定义,定义方式如下:

@defining( err.message.split(",").lift ) { errors =>
  ...
}
lift的使用可能很方便,因为它有助于处理索引越界的情况,在这种情况下,您可能不知道数组/集合中元素的确切数量。errors2将在示例中返回大约20,如果没有值,则返回None

将最内层的for循环替换为上述内容,并将其硬编码为正好3个参数,您可能会得到如下结果

  @defining( errors(0).getOrElse("") ) { messageId =>
    @Message(messageId,errors(1).getOrElse(""),errors(2).getOrElse(""))
  }

在你的回答中,我学到了很多关于scala twirl的东西。非常感谢。我使用@defining一段时间,一个go buy在数组大小方面有问题,给了我错误,所以我做的是放置一个条件为arrayParam.size==1的else if语句,以此类推。它需要在条件中声明这么多消息。你只是把它缩短了。非常感谢。
  @defining( errors(0).getOrElse("") ) { messageId =>
    @Message(messageId,errors(1).getOrElse(""),errors(2).getOrElse(""))
  }