我使用Spring MVC(4.1.6.RELEASE)和Thymeleaf(2.1.4.RELEASE)。我的实体类的百分比字段存储为float
。
@Entity
@Table(name="loans")
public class Loan {
private float percentage;
...
@NumberFormat(style=NumberFormat.Style.PERCENT)
@Column(name="percentage")
public float getPercentage() {
return percentage;
}
public void setPercentage(float percentage) {
this.percentage = percentage;
}
...
}
我的观点使用Thymeleaf Spring方言将此bean绑定到表单。
<form th:object="${loan}" th:action="@{/form-handler}">
<input type="text" th:field="*{percentage}" placeholder="e.g. 1.5%" />
<input type="submit" />
</form>
表单绑定在提交时工作正常。输入值为&#34; 12.675%&#34;绑定到bean并保存到数据库中作为&#34; 0.12675&#34;,但是当在编辑表单中显示时,使用{{1}时,Spring @NumberFormat
注释会自动舍入到13% }。我想显示小数百分点,即&#34; 12.675%&#34;。
我考虑过在我的实体上编写一个单独的getter(例如getPercentFormatted),但是NumberFormat.Style.PERCENT
字段在我的Controller中无法正确绑定。我想我也可以写一个额外的setter,它除以100并设置属性,但我不喜欢这种方法。有什么建议吗?
答案 0 :(得分:0)
尝试使用适当的模式
添加@NumberFormat
属性pattern
对于自定义格式,请将pattern()属性设置为数字 模式,例如#,###。##。
每个属性都是互斥的,因此每个属性只能设置一个属性 注释实例(最方便的一个用于格式化) 需要)。指定pattern属性时,它优先 在style属性上。如果未指定注释属性, 应用的默认格式是基于样式的,样式为 NumberFormat.Style.NUMBER。