2

4567.00 、 8976.00 などの金額の値を取得しています。この値を displaytag に表示しているときに、4567.00 ではなく $4567.00 として印刷したいと思います。どうやってやるの?表示タグを使用したいだけです。core:out タグを使用して同じことを実現できます。

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

回答が見つかりました [どうやってやったのですか]

新しいクラスを作成します。

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
    }
}

現在表示タグに

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

注: displaytag:column の format 属性で MessageFormat を使用できます。

4

4 に答える 4

9

あなたのクラスは何のために必要ですか?次のように記述できます。

<displaytag:column property="amount" format="$ {0,number,0,000.00}"/>
于 2009-07-23T15:15:15.800 に答える
4

DisplayTabはJSTLまたはELにあまり対応しておらず、そのスタイルのフォーマットをサポートしていません。代わりに、TableDecoratorクラスを拡張し、display:tableタグのdecorator属性を使用してそのクラスへの参照を配置する必要があります。

デコレータサブクラスは、フォーマットされた通貨列のゲッターメソッドを次のように定義する必要があります。

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

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

または、DisplaytagColumnDecoratorインターフェイスを実装し、JSPからそのデコレータを参照することもできます。

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

詳細については、ドキュメントを参照してください

于 2009-06-22T16:04:46.707 に答える
1

デコレータを使用できます。

あなたは次のようなものを持っているでしょう

class myDecorator extends TableDecorator{

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


   return "$"+myClass.getCurrency;

 }
}

それらをチェックしてください!http://displaytag.sourceforge.net/10/tut_decorators.html

デコレータを使用したくない場合は、id属性と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>

display:tagタグリファレンスから

id:uidを参照

uid:このテーブルを識別するために使用される一意のID。現在の行を表すオブジェクトもこの名前でpageContextに追加され、現在の行番号はキーuid_rowNumを使用して追加されます。同じページ内の2つのテーブルが同じuidを持つことはできません(ページングと並べ替えは両方に影響します)。「htmlId」が指定されていない場合、生成されたテーブルのhtmlidに同じ値が使用されます

于 2009-06-22T16:08:29.207 に答える
0

これが私が使用するものです:

<d:column title="Cost" property="cost" format="{0,number,currency}" sortable="true"/>
于 2012-06-21T20:00:56.960 に答える