У меня проблема с форматированием BigDecimal
в Struts2
с использованием тега <s:property>
вместе с getText()
.При первом использовании (до тега итератора) он работает как положено.Во второй раз, когда я пытаюсь использовать его, он имеет свойство переменной итератора.В этом случае он ничего не печатает.У меня Struts2
с devMod
на , и я тоже не получаю никаких исключений.Тем не менее, то же свойство при выводе с использованием тега <s:property>
без getText()
работает, как и ожидалось.
Я перепробовал все виды альтернатив, таких как включение переменной в %{}
, удаление всего включения, добавлениеимя переменной с hash tag
и другими вариантами.
Существует ответ для использования тега <s:text>
, но даже если это альтернатива, я хотел бы знать, как заставить это работать с getText
.
Класс для объекта "reporte", предоставляемый JSP с помощью метода получения и установки в действии.
public class Reporte {
List<Reporte.Item> detalle = new ArrayList<>();
BigDecimal totalGeneral;
public List<Reporte.Item> getDetalle() {
return detalle;
}
public void setDetalle(List<Reporte.Item> detalle) {
this.detalle = detalle;
}
public void setTotalGeneral(BigDecimal totalGeneral){
this.totalGeneral = totalGeneral;
}
public BigDecimal getTotalGeneral(){
return this.totalGeneral;
}
public static class Item{
private BigDecimal total;
public BigDecimal getTotal() {
return total;
}
public void setTotal(BigDecimal total) {
this.total = total;
}
}
}
JSP
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@taglib prefix="s" uri="/struts-tags" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Reporte</title>
</head>
<body>
<s:property value="getText('{0,number,#,##0.00}',{reporte.totalGeneral})"/> <br/> <%-- works --%>
<s:iterator var="det" value="reporte.detalle">
<s:property value="total"/> <%-- works --%>
<s:property value="getText('{0,number,#,##0.00}', {total})"/><br/> <%-- doesn't print anything --%>
</s:iterator>
</body>
</html>