我正在传递一份清单
errors.add(new ValidationError("Employee " + strId, "error.range," + strName +","+ intRange));
将构建一个字符串
"Employee1","error.format,FIRST NAME,20
我想用“,”拆分消息字符串,并将其存储在scala模板中的数组变量中或在视图中旋转。我不太擅长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>
我所做的是使用for循环来做它,但它不是我需要的。我需要在数组中声明所有字符串,并将它们用作@Messages
上的参数。像:
@Messages(error[0],error[1],error[2])
其中error0 =“error.range”,error1 =“FIRST NAME”,error2 =“20”。在conf / message中,我将使用参数
构建一条错误消息error.range = Enter {0} in {1} characters or less.
答案 0 :(得分:1)
使用@defining
以变换方式确定变量,方法如下:
@defining( err.message.split(",").lift ) { errors =>
...
}
使用lift
可能很方便,因为它有助于索引越界条件,您可能不知道数组/集合中元素的确切数量。错误(2)将在您的示例中返回Some("20")
,如果没有值,则返回None
。
用上面的代码替换你最内层的for循环并硬编码到3个参数,你可能会有类似的东西
@defining( errors(0).getOrElse("") ) { messageId =>
@Message(messageId,errors(1).getOrElse(""),errors(2).getOrElse(""))
}