2017-10-10 48 views
0

我传递一个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. 

回答

1

变量在使用@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("")) 
    } 
+0

我了解斯卡拉捻这么多的事情在这个答案你的事。谢谢一堆。我用@定义了一段时间去购买有一个数组大小的问题给我错误,所以我所做的是把一个else if语句与arrayParam.size == 1等条件。它在条件中需要很多消息声明。你做得这么简短。非常感谢。 – NoobProgrammer