2017-10-10 14 views
0

Je passe une listeSéparez les chaînes par des virgules puis stockez dans array val in Play! + Scala

errors.add(new ValidationError("Employee " + strId, "error.range," + strName +","+ intRange)); 

qui construira une chaîne

"Employee1","error.format,FIRST NAME,20 

Je veux diviser la chaîne de message avec « » et le stocker dans une variable de tableau dans le modèle de scala ou virevolter en vue. Je ne suis pas vraiment bon en scala code je ne sais pas comment stocker une variable dans un calibre scala ni connaître la syntaxe en séparant une chaîne. Y at-il un code qui peut faire cette tâche dans le modèle de scala ?. Je vous remercie.

<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> 

Ce que j'ai fait était d'utiliser une boucle for pour le faire mais ce n'est pas ce dont j'avais besoin. J'ai besoin de déclarer toute la chaîne dans un tableau et de les utiliser comme paramètres sur le @Messages. comme:

@Messages(error[0],error[1],error[2]) 

Dans ce error0 = "error.range", error1 = "PRENOM" et error2 = "20". Dans le fichier conf/message je bâtirai un message d'erreur avec les paramètres

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

Répondre

1

Les variables sont la définition desquels à tournoyer en utilisant @defining, de la manière suivante:

@defining(err.message.split(",").lift) { errors => 
    ... 
} 

L'utilisation de lift pourrait être à portée de main, comme aide avec des conditions hors limites d'index où vous pourriez ne pas connaître le nombre exact d'éléments dans le tableau/collection. les erreurs (2) renverront Some("20") dans votre exemple et None s'il n'y a pas de valeur.

Le remplacement de votre plus à l'intérieur de la boucle au-dessus et à hardcoding exactement 3 paramètres, alors vous pourriez avoir quelque chose comme

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

j'ai appris tant de choses sur scala tournoyer dans cette réponse de la vôtre. Merci beaucoup. J'ai utilisé @defining un moment où un buy go a eu un problème de taille de tableau me donnant des erreurs donc ce que j'ai fait était de mettre une instruction else if avec la condition de arrayParam.size == 1 et ainsi de suite. il faut tant de messages de déclaration dans les conditions. et vous venez de faire ce court. Merci beaucoup. – NoobProgrammer