Frage

Ich erhalte den Wert der Menge wie 4567,00, 8976,00 etc. Nun, während dieser Wert in displaytag dispalying ich es als $ 4567,00 statt 4567,00 nur drucken möchten. Wie kann ich das machen? Vorausgesetzt, ich möchte nur Display-Tag verwenden. Ich kann die gleiche Sache mit Kern acheive. Out-Tag

$<core:out value="${variableInMyList}" />

Antwort gefunden [Wie ich tue es]

Erstellen

eine neue Klasse:

public class NumberFormatDecorator implements DisplaytagColumnDecorator{
    Logger logger = MyLogger.getInstance ( );

    public Object decorate(Object columnValue, PageContext pageContext, MediaTypeEnum media) throws DecoratorException {        
        try
        {
            Object colVal = columnValue;
            if ( columnValue != null ){
                colVal = Double.parseDouble( (String)columnValue );
            }
            return colVal;
        }catch ( Exception nfe ){}
        logger.error( "Unable to convert to Numeric Format");
        return columnValue; // even if there is some exception return the original value
    }
}

jetzt im Display-Tag

<displaytag:column title="Amount" property="amount" decorator="com.rj.blah.utils.decorator.NumberFormatDecorator" format="$ {0,number,0,000.00}"/>

Hinweis: wir das Message im Format Attribute displaytag verwenden: Spalte

War es hilfreich?

Lösung

DisplayTab ist nicht sehr JSTL oder EL freundlich, und nicht, dass die Art der Formatierung nicht unterstützt. Stattdessen müssen Sie die TableDecorator Klasse erweitern und einen Verweis auf sie setzen die Dekorateur Attribut des Displays mit:. Table-Tag

Ihre Dekorateur Unterklasse sollte eine Getter-Methode für die formatierten Währungsspalt, so etwas wie definieren:

public class MyTableDecorator extends TableDecorator {
    public String getCurrency() {
        MyRowType row = getCurrentRowObject();
        return row.getCurrency.format();
    }
}

und

<display:table name="myList" decorator="test.MyTableDecorator">
    <display:column property="myProperty" title="My Property"/>
    <display:column property="currency" title="Currency"/>
</display:table>

Alternativ können Sie den DisplaytagColumnDecorator Schnittstelle und Referenz implementieren, die von der JSP-Dekorateur:

<display:table name="myList">
    <display:column property="myProperty" title="My Property"/>
    <display:column property="currency" title="Currency" decorator="test.MyColumnDecorator"/>
</display:table>

Siehe die Dokumentation für weitere Informationen

Andere Tipps

Was brauchen Sie Ihre Klasse für? Man könnte es wie folgt schreiben:

<displaytag:column property="amount" format="$ {0,number,0,000.00}"/>

Sie könnten einen Dekorateur verwenden.

Sie würde so etwas haben

class myDecorator extends TableDecorator{

 public String getCurrency(){
   MyClass myClass  = (MyClass)getCurrentRow();


   return "$"+myClass.getCurrency;

 }
}

Überprüfen Sie sie heraus! http://displaytag.sourceforge.net/10/tut_decorators.html

Wenn Sie möchten, Dekorateure nicht verwenden, können Sie das Attribut-ID verwenden und JSTL

<display:table htmlId="list" name="mylist" id="row">

   <display:column>
    <%-- row is your current list object. row.currency calls getCurrency()
         $ goes right out to HTML
    --%>
     $ <c:out="${row.currency}"/>
   </display:column>
</display:table>

Anzeige: tag tag Referenz

  

id : siehe uid

     

uid : Eindeutige ID zur Identifizierung dieses   Tabelle. Das Objekt, das die   aktuelle Zeile wird auch die hinzugefügte   Pagecontext unter diesem Namen und die   aktuelle Zeilennummer hinzugefügt, um die Verwendung von   Schlüssel uid_rowNum. Zwei Tische in der gleichen   Seite kann nicht die gleiche uid (Paging   und Sortierung beeinflussen beide). wenn nein   „HtmlId“ ist der gleiche Wert angegeben   wird für die HTML-ID von der verwendet werden   generierte Tabelle

Hier ist, was ich benutze:

<d:column title="Cost" property="cost" format="{0,number,currency}" sortable="true"/>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top