2009-10-13 51 views
13

Tôi muốn định dạng số được hiển thị bằng <s:property value="summary.total"/> thẻ trong Struts 2. Có giá trị double. Làm thế nào tôi có thể làm điều đó? Tôi có nên sử dụng OGNL không?Số định dạng trong Struts 2 <s:property/> thẻ

Hoặc có thể tôi phải sử dụng thẻ <s:text/> và xác định định dạng của tôi trong tệp nguồn gốc?

Trả lời

9

Bạn cần sử dụng <s:text/> với <s:param/>.

tập tin tài sản:

summary.cost= € {0,number,##0.00} 

JSP:

<s:text name="summary.cost"> 
    <s:param name="value" value="summary.total"/> 
</s:text> 

This answer giải thích làm thế nào để sử dụng #0 trong mặt nạ dạng.

+0

Yeah, tôi phát hiện ra rằng, nhưng tôi nghĩ rằng có lẽ có cái gì đó nhanh hơn :) – prostynick

+0

A 'double' giá trị, và €? Tôi chắc chắn hy vọng rằng bạn không sử dụng số dấu chấm động cho tiền tệ. – Svante

+0

Tôi chưa bao giờ đề cập đến € và Trick không bao giờ được đề cập 'double';) – prostynick

6

một này nhanh:

<s:property value="getText('struts.money.format', {summary.cost})" /> 

Và trong tài sản của bạn tập tin này:

struts.money.format= {0,number,\u00A4##0.00} 

Hy vọng điều này giúp đỡ

16

Cách nhanh hơn

<s:property value="getText('{0,number,#,##0.00}',{summary.total})"/> 

Lucky! !

2

tôi có vấn đề này để định dạng một số theo cách này 1.234,56

vì vậy tôi ưa thích cả hai thẻ Struts thẻ và thẻ fmt (fmt vì s: số không tồn tại)

vì vậy tôi sử dụng các syntaxe sau:

<s:label label="mylabel"> 
    <s:param name="value"> 
     <s:text name=""> 
    <fmt:formatNumber maxFractionDigits="2" pattern="#.###" >1234.56</fmt:formatNumber> 
     </s:text> 
    </s:param>  
</s:label> 

và đó là công việc

1

Nếu tài sản của bạn không phải là số trong hành động của bạn thì gettext sẽ không làm việc trên đó. Mẫu chỉ chấp nhận số. Trong trường hợp này bạn có thể đi với fmt như đã đề cập bởi @sarie

<fmt:formatNumber groupingUsed="true" type="currency" value="${amount}" /> 
Các vấn đề liên quan