我在BigDecimal
使用Struts2
标记和<s:property>
格式化getText()
时出现问题。
我第一次使用它(在迭代器标记之前),它按预期工作。
我第二次尝试使用它时,它具有迭代器变量的属性。在这种情况下,它不会打印任何东西。
我在上有Struts2
devMod
,我也没有获得任何例外情况。
但是,使用不带<s:property>
的{{1}}标记输出时,相同的属性可按预期工作。
我尝试了各种替代方法,例如将变量括在getText()
中,删除全部封闭,
使用%{}
添加变量的名称,以及更多变体。
有一个使用hash tag
标记的答案,但即使这是另一种选择,我想知道如何使用<s:text>
。
&#34; reporte&#34;的课程在Action中使用getter和setter为JSP提供的对象。
getText
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;
}
}
}
答案 0 :(得分:0)
在迭代器标记内调用#action.
之前添加getText
来解决问题。
我的理解是getText()
是Action
(SupportAction
)的成员函数,所以当动作位于堆栈的顶部时,可以在不指定变量的情况下调用它。
<s:property value="#action.getText('{0,number,#,##0.00}', {total})"/><br/>
在迭代器中,项目放在堆栈的顶部,因此要调用操作的getText
,需要引用变量名称。
提示:我真正想到的是使用<s:degub>
标记,并且在使用devMod
时,?debug=xml
参数跟随获取堆栈转储的动作(需要IE)。