Номер формата в теге Struts 2 <s: property/">
Я хотел бы отформатировать номер, отображаемый тегом <s:property value="summary.total"/>
в Struts 2. Значение double
. Как я могу это сделать? Должен ли я использовать OGNL
?
Или, может быть, я должен использовать тэг <s:text/>
и определить свой формат в файле resuource?
Ответы
Ответ 1
Вам нужно использовать <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
в маске формата.
Ответ 2
Чем быстрее
<s:property value="getText('{0,number,#,##0.00}',{summary.total})"/>
Лаки!!
Ответ 3
Это быстрее:
<s:property value="getText('struts.money.format', {summary.cost})" />
И в вашем файле свойств это:
struts.money.format= {0,number,\u00A4##0.00}
Надеемся на эту помощь
Ответ 4
У меня была эта проблема для форматирования числа таким образом 1.234,56
поэтому я предпочитаю теги тегов struts и тега 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>
и он работает
Ответ 5
Если ваше свойство не является числом в вашем действии, getText не будет работать над ним. Шаблон принимает только числа. В этом случае вы можете пойти с fmt, как указано @sarie
<fmt:formatNumber groupingUsed="true" type="currency" value="${amount}" />
Ответ 6
Самый быстрый и простой способ - использовать <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