2012-05-02 10 views
12

Sto utilizzando JSF 2 e RichFaces 3. Qui nell'immagine mostrata di seguito, i numeri vengono visualizzati come quelli che sono nel database.Visualizzazione di un numero in formato decimale a 2 punti in jsf

enter image description here

ma voglio visualizzarli come se 6749395.20 parte frazionaria è lì e 5095138.00 se nessuna parte frazione è lì.

A partire da ora ho provato qualcosa di simile.

<rich:column> 
    <f:facet name="header"> 
     <h:outputText value="Total Amount"/> 
    </f:facet> 
    <h:outputText value="#{rr[2]}"> 
     <f:convertNumber type="number" groupingUsed="true" minFractionDigits="2" pattern="#0.00"/> 
    </h:outputText> 
</rich:column> 

In realtà io sto mostrando tutti insieme, ma ho cercato con tutti loro, come tutte le possibili combinazioni con type, groupingUsed, minFractionDigits e pattern.

Perché non funziona? Come è causato e come posso risolverlo?

+0

Il convertitore dovrebbe funzionare come previsto. Il 'minFractionDigits =" 2 "' dovrebbe essere sufficiente. Hai provato la stessa fuori dal dataTable? –

+0

ya uomo l'ho provato anche all'esterno del datatable, ma il problema principale era datatype e grazie a @BalusC, mi ha aiutato. – Addicted

risposta

32

Ciò può accadere se il valore non è uno Number, ad esempio uno String. Quindi stai usando fondamentalmente il tipo sbagliato per i dati che rappresenta. Per rappresentare le valute in Java, dovresti usare BigDecimal. Inoltre, assicurati che il tipo nella tabella del database sia corretto, cioè non dovrebbe essere un varchar, ma un decimale.

Una volta risolto il tipo di dati, il <f:convertNumber> funzionerà come gli è stato detto. Si noti che l'attributo pattern sostituirà lo groupingUsed e minFractionDigits. È necessario utilizzare lo patterno gli altri. Inoltre, type="number" è già il valore predefinito, quindi può essere rimosso.

Quindi, o utilizzare

<f:convertNumber pattern="#0.00" /> 

o

<f:convertNumber groupingUsed="true" minFractionDigits="2" /> 

Nota che generano diversi formati. Probabilmente vuoi impostare il raggruppamento su false.

È inoltre possibile utilizzare type="currency", sarà quindi applicare automaticamente il modello di destra come da UIViewRoot#getLocale():

<f:convertNumber type="currency" /> 

Vedere anche il tag library documentation e la DecimalFormat javadoc.

+0

effettivamente nel mio database erano numeri e li stavo recuperando in stringa e poi cercavo di visualizzarli come numeri con qualche schema. Ora l'ho cambiato in un arraylist. e ora sta visualizzando il formato corretto e desiderato. Grazie amico Grazie mille ................ – Addicted

+0

E con la valuta del nome, c'è un metodo con cui posso visualizzare il simbolo INR insieme alla rupia come se POSSO visualizzare il simbolo del dollaro ($). – Addicted

+0

No grazie, ho capito anche questo ..... – Addicted

Problemi correlati