Форматировать номер в теге Struts 2

Я хотел бы отформатировать число, отображаемое <s:property value="summary.total"/>тегом в Struts 2. Есть doubleзначение. Как я могу это сделать? Должен ли я использовать OGNL?

Или, может быть, я должен использовать <s:text/>тег и определить свой формат в файле ресурсов?

13.10.2009 07:23:29
6 ОТВЕТОВ
РЕШЕНИЕ

Вам нужно использовать <s:text/>с <s:param/>.

Файл свойств:

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

JSP:

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

Этот ответ объясняет, как использовать#и0в маске формата.

10
23.05.2017 10:29:50
Да, я нашел это, но я подумал, что, может быть, есть что-то быстрее :)
prostynick 13.10.2009 07:37:02
doubleЗначение, и €? Я, конечно, надеюсь, что вы не используете числа с плавающей запятой для валюты.
Svante 13.10.2009 08:14:39
Я никогда не упоминал €, а Трик никогда не упоминал double;)
prostynick 13.10.2009 08:36:39
Быстрее только с тегом <s: date />, который имеет атрибут формата. Конечно, вы можете реализовать свой собственный тег, который может включать форматирование :)
Trick 13.10.2009 08:58:41

Этот быстрее:

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

И в вашем файле свойств это:

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

Надеюсь это поможет

5
7.03.2011 22:46:15

Путь быстрее

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

Счастливчик!!

16
22.03.2011 16:20:41

у меня была эта проблема, чтобы отформатировать число таким образом 1.234,56

поэтому я предпочел оба тега Struts Tag и тег FMT (fmt, потому что s: номер не существует)

поэтому я использовал следующий синтаксис:

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

и это работа

2
5.07.2011 09:10:56

Если в вашем действии не указано число, то getText не будет работать с ним. Шаблон принимает только цифры. В этом случае вы можете использовать fmt, как упомянуто @sarie.

<fmt:formatNumber groupingUsed="true" type="currency" value="${amount}" />
1
16.11.2013 15:21:13

Самый быстрый и простой способ - использовать <s:number />тег.

Пример:

<s:number name="%{summary.total}" minimumFractionDigits="2" type="currency" currency="USD" />

Подробнее о теге здесь https://struts.apache.org/maven/struts2-core/apidocs/org/apache/struts2/components/Number.html.

0
13.06.2019 11:28:53