2017-10-10 47 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