用逗号分割字符串然后在Play中存储数组val! +斯卡拉
问题描述:
我传递一个List用逗号分割字符串然后在Play中存储数组val! +斯卡拉
errors.add(new ValidationError("Employee " + strId, "error.range," + strName +","+ intRange));
,将建立一个字符串
"Employee1","error.format,FIRST NAME,20
我想分裂与消息字符串“”并将其存储在一个数组变量在斯卡拉模板或旋转视图中。我并不擅长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 /消息,我将建立与参数
error.range = Enter {0} in {1} characters or less.
答
变量在使用@defining
捻,以下面的方式definined的错误消息:
@defining(err.message.split(",").lift) { errors =>
...
}
采用lift
可能是方便的,因为它有助于索引超出界限条件,您可能不知道数组/集合中元素的确切数量。如果没有值,错误(2)将在您的示例中返回Some("20")
,返回None
。
更换你的内心与上述环和硬编码恰好3个参数,你可能会再有类似
@defining(errors(0).getOrElse("")) { messageId =>
@Message(messageId,errors(1).getOrElse(""),errors(2).getOrElse(""))
}
我了解斯卡拉捻这么多的事情在这个答案你的事。谢谢一堆。我用@定义了一段时间去购买有一个数组大小的问题给我错误,所以我所做的是把一个else if语句与arrayParam.size == 1等条件。它在条件中需要很多消息声明。你做得这么简短。非常感谢。 – NoobProgrammer