2012-08-09 2 views
0

Je veux manipuler des nombres flottants dans gsp, voici ce que je veux:Affichage des numéros de flotteur Grails dans gsp

Si le nombre a 1. * Je veux montrer le point, mais si elle se termine par zéro Je ne veux pas qu'il montre le point et zéro.

comme ceci:

Score: 1.5

Score: 1

Score: 2.1

Score: 3

La variable score est un nombre flottant et il est un champ de saisie sur le gsp qui charge le nombre et il peut être changé.

Mais le vrai problème est, comment puis-je voir si le nombre a des nombres décimaux?

Répondre

2

Il existe déjà un taglib pour les numéros formating: (g: formatNumber)

Je pense que quelque chose comme cela devrait fonctionner:

<g:formatNumber number="${score}" type="number" format="###.##"/> 

Mais ... si cela ne fonctionne pas ... Je dirais écrire votre propre taglib personnalisé. Si c'est quelque chose qui va être utilisé plusieurs fois, pourquoi parcourir une liste d'objets dans votre contrôleur, changer le flottant en une chaîne juste pour l'afficher? Laissez la page décider comment l'afficher dans le bon contexte.

Ou

Ajouter un champ transitoire à l'objet de domaine (String scoreDisplay) et ensuite getScoreDisplay() renvoie la valeur de la partition sous forme de chaîne, formatée comme vous le souhaitez.

1

Eh bien, je vous suggère de formater le numéro dans votre contrôleur - avant qu'il ne parvienne à votre gsp. De cette façon, vous avez plus de contrôle sur le format numérique. Une fois que vous êtes dans le gsp, vous devez utiliser un format de nombre décimal de Grails ou make your own taglib pour formater (puisque le nombre de chiffres fractionnaires change dans votre cas).