سؤال

أنا على الحصول على قيمة المبلغ مثل 4567.00 , 8976.00.... الخالآن حين dispalying هذه القيمة في displaytag أود أن طباعته دولار 4567.00 بدلا من مجرد 4567.00.كيف يمكن أن أفعل ذلك ؟ المقدمة أريد فقط أن استخدام عرض الوسم.أنا يمكن أن تحقق نفس الشيء باستخدام الأساسية:من الوسم.

$<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}"/>

ملاحظة: يمكننا استخدام MessageFormat في شكل سمة من displaytag:عمود

هل كانت مفيدة؟

المحلول

DisplayTab لا JSTL أو ش ودية و لا يدعم هذا النمط من التنسيق.بدلا من ذلك تحتاج إلى تمديد TableDecorator فئة ووضع الإشارة إلى ذلك باستخدام الديكور سمة display:table الوسم.

مصمم الديكور فرعية يجب تحديد جالبة طريقة تنسيق العملة عمود أو شيء من هذا القبيل:

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>

انظر الوثائق للحصول على مزيد من المعلومات

نصائح أخرى

ماذا تحتاج صفك ؟ يمكن أن تكتب على النحو التالي:

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

هل يمكن استخدام الديكور.

سيكون لديك شيء مثل

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>

من عرض:الوسم الوسم المرجعية

معرف:انظر uid

uid:هوية فريدة من نوعها تستخدم لتحديد هذا الجدول.الكائن الذي يمثل الصف الحالي هو أيضا إضافة إلى pageContext تحت هذا الاسم ، الصف الحالي هو استخدام الرئيسية uid_rowNum.الجدولين في نفس الصفحة لا يمكن أن يكون نفس uid (الترحيل والفرز سوف تؤثر على حد سواء).لو لا "htmlId" يتم تحديد نفس القيمة وسوف تستخدم html معرف إنشاء الجدول

هنا هو ما يمكنني استخدام:

<d:column title="Cost" property="cost" format="{0,number,currency}" sortable="true"/>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top