2017-09-23 4 views
0

J'utilise un <f:convertNumber groupingUsed="false" /> dans mon <h:inputText pour convertir la saisie des utilisateurs en nombre. Lorsque vous ouvrez de nouveau la boîte de dialogue d'entrée, l'entrée est formatée pour afficher seulement 3 chiffres de fraction. Comment puis-je changer cela pour montrer l'entrée "telle quelle".Afficher la valeur d'origine dans JSF f: convertirNumber (nombre illimité de chiffres de fraction)

Pour mettre en forme la valeur en sortie, j'utilise #{of:formatNumber(specification.pricePerUnit, '#0.000')} pour afficher 3 chiffres de fraction (au moins). Malheureusement, nous avons des clients qui voudraient entrer plus de chiffres de fraction (problème ci-dessus). Alors, comment pourrais-je afficher le nombre avec au moins 3 chiffres de fraction, mais s'il y en a plus, montrez-les tous?

Merci à l'avance :)

+1

Je ne sais pas si je comprends bien votre problème - il suffit d'utiliser ' '# 0,000 ####### '' format pour toujours afficher 3 chiffres de fraction (même s'ils sont 0), et jusqu'à 10 chiffres de fraction, il n'y a pas 0. Par exemple ceci: '' affichera: '123,123456789' et celui-ci:' ' affichera: '123,400' – krokodilko

+0

ah d'accord, merci. Cela fonctionne très bien pour afficher la valeur. :) L'autre problème concerne l'édition de cette valeur, par ex. pour la valeur '123,123456789', l'entrée h: affiche '123,123' à la place de la valeur' ​​réelle '. – J4y

+0

okay, il y a cet attribut 'maxFractionDigits', que je pourrais aussi mettre' 10'. Mais n'y a-t-il pas moyen d'afficher la valeur dans 'h: input' car elle provient de la base de données, mais comme numéro localisé? – J4y

Répondre

1

bien, supposons que le texte suivant: J'ai un formulaire avec:. J'entre la valeur 123,123456789 et je l'enregistre. Avec votre code ci-dessus sur une autre page, la valeur est affichée comme 123,123456789. Mais lorsque j'ouvre à nouveau le formulaire pour modifier la valeur, le champ de saisie l'affiche comme 123 123 mais pas 123 123456789. Donc, je suppose que la valeur par défaut pour maxFractionDigits est 3?

Un exemple très simple:

<h:form> 
    <div> 
    <h:outputText value="#{of:formatNumber(testBean.myNumber, '0.000#######')}" /> 
    </div> 
    <div> 
    <h:inputText value="#{testBean.myNumber}" > 
     <f:convertNumber groupingUsed="false" pattern='0.000#######' /> 
    </h:inputText> 
    </div> 
    <h:commandButton type="submit" value="Submit" /> 
</h:form> 

et un code de haricot:

private BigDecimal myNumber = new BigDecimal("355.3456"); 

public BigDecimal getMyNumber() { 
    return myNumber; 
} 

public void setMyNumber(BigDecimal myNumber) { 
    this.myNumber = myNumber; 
} 

Quelques tests:

Une page ressemble ci-dessous après une première requête GET :

enter image description here


Maintenant, je tape dans 12345,6789099

enter image description here


Et après que le bouton a été cliqué Submit:
enter image description here


Quelques autres exemples:
enter image description here

enter image description here

enter image description here

+0

ah d'accord, donc je dois ajouter ce modèle partout. Merci beaucoup :) – J4y