2012-11-14 6 views
10

J'ai un fichier GSP dans lequel je vais obtenir une valeur du contrôleur disons par exemple ${paramsValue?.ruleCount} est 3 et sur cette base je dois créer des lignes de table.Comment faire une boucle dans GSP?

Est-il possible de le faire dans gsp

Répondre

21

Qu'en est-

<g:each in="${(1..paramsValue?.ruleCount).toList()}" var="count" > 
    ... 
</g:each> 

?

Mais ce serait mieux si vous préparer une liste avec le contenu à afficher dans votre contrôleur ...

Mise à jour:

juste de l'essayer:

<% def count=5 %> 
<g:each in="${(1..count).toList()}" var="c" > 
    ${c} 
</g:each> 

travaux.

<% def count=5 %> 
<g:each in="${1..count}" var="c" > 
    ${c} 
</g:each> 

fonctionne aussi, et est encore plus court.

Update2:

Il semble que vous souhaitez utiliser un paramètre d'URL comme nombre. Ce code fonctionnera dans ce cas:

<g:each in="${params.count?1..(params.count as Integer):[]}" var="c" > 
    ${c} 
</g:each> 

il vérifie s'il existe un paramètre de comptage. Sinon, il retournera une liste vide pour itérer. Si count est défini, il le convertira en entier, créera un Range et le convertira implicitement en une liste à parcourir.

+2

Est-ce que 'in =" $ {1..paramsValue.ruleCount} "' ne fonctionnerait pas? – sync

+0

Non ça ne fonctionne pas – Siva

+0

Quel est le message d'erreur que vous obtenez - est-ce que votre 'paramsValue? .ruleCount' n'est pas un nombre? alors essayez 'paramsValue? .ruleCount comme Integer' – rdmueller

Questions connexes