我得到的金额如4567.00,8976.00等。现在,虽然在displaytag中显示这个值,我想将其打印为$ 4567.00而不是4567.00。我怎样才能做到这一点? 只要我想使用显示标签。我可以使用core:out tag来实现同样的目标。
$<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的格式属性中的MessageFormat:column
答案 0 :(得分:8)
你需要什么课? 您可以按如下方式编写它:
<displaytag:column property="amount" format="$ {0,number,0,000.00}"/>
答案 1 :(得分:3)
DisplayTab不是非常JSTL或EL友好,并且不支持这种格式化。相反,您需要扩展TableDecorator类并使用display:table标签的decorator属性对其进行引用。
您的装饰器子类应为您的格式化货币列定义一个getter方法,如:
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>
有关详细信息,请参阅the documentation
答案 2 :(得分: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>
id :请参阅uid
uid :用于识别此标识的唯一ID 表。代表的对象 当前行也被添加到 pageContext下有这个名字和 使用。添加当前行号 关键字uid_rowNum。两张桌子一样 页面不能有相同的uid(分页 和排序将影响两者)。如果不 “htmlId”指定相同的值 将用于.html的id 生成表
答案 3 :(得分:0)
以下是我使用的内容:
<d:column title="Cost" property="cost" format="{0,number,currency}" sortable="true"/>