2009-06-22 13 views
2

formatiere Ich erhalte den Wert des Betrages wie 4567.00, 8976.00 etc. Jetzt, während ich diesen Wert in displaytag dispate, möchte ich es als $ 4567.00 anstatt nur 4567.00 drucken. Wie kann ich das machen? Vorausgesetzt, ich möchte nur Display-Tag verwenden. Ich kann die gleiche Sache mit Core: out-Tag erreichen.wie man Währung im displaytag

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

Antwort gefunden [wie ich es tat]

Erstellen Sie 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 in -kennzeichnungsschild

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

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

Antwort

3

DisplayTab nicht sehr JSTL oder EL freundlich ist, und nicht, dass die Art der Formatierung unterstützen. Stattdessen müssen Sie die TableDecorator-Klasse erweitern und einen Verweis darauf mithilfe des Decorator-Attributs des Tags display: table hinzufügen.

Ihr Dekorateur Unterklasse sollte eine Getter-Methode für die formatierten Währungsspalte, 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 die DisplaytagColumnDecorator Schnittstelle und Referenz implementieren, die von Dekorateur die JSP:

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

Siehe the documentation für weitere Informationen

1

Sie könnten einen Dekorateur verwenden.

würden Sie so etwas wie

class myDecorator extends TableDecorator{ 

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


    return "$"+myClass.getCurrency; 

} 
} 

Überprüfen Sie sie haben aus! siehe uid

: http://displaytag.sourceforge.net/10/tut_decorators.html

Wenn Sie Dekorateure nicht verwenden, können Sie das id-Attribut 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> 

Von display:tag tag reference

id verwenden uid: Eindeutige ID zur Identifizierung dieser Tabelle . Das Objekt, das die aktuelle Zeile darstellt, wird ebenfalls zum pageContext unter diesem Namen hinzugefügt und die aktuelle Zeilennummer wird unter Verwendung des Schlüssels uid_rowNum hinzugefügt.Zwei Tabellen in der gleichen Seite können nicht die gleiche UID haben (Paging und Sortierung wird beide betreffen). Wenn keine „htmlId“ angegeben wird der gleiche Wert wird für die HTML-ID der generierten Tabelle

+0

** $ **, wie ich sagte, das möchte ich nicht machen. Aber danke für das Decorator-Konzept –

8

Was verwendet wird, müssen Sie Ihre Klasse für? Man könnte es wie folgt schreiben:

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

Wie würden Sie die Währung formatieren, wenn anstelle einer Zahl der Typ der Eigenschaft String ist. Ich habe '$ {0, string, 0,000.00}' und $ '{0, String, 0,000.00}' versucht, aber es hat nicht funktioniert. –

0

Hier ist, was ich benutze:

<d:column title="Cost" property="cost" format="{0,number,currency}" sortable="true"/>