use*_*069 4 java spring annotations spring-mvc spring-el
---- SampleVO
@NumberFormat(pattern = "###,##0")
private int money=100000;
Run Code Online (Sandbox Code Playgroud)
-----控制器
@RequestMapping(value="/com/spelSample.do")
public String spelSample(SampleVO sampleVO, Model model){
model.addAttribute("sampleVO", sampleVO);
return "sampleResult";
}
Run Code Online (Sandbox Code Playgroud)
------- sampleResult.jsp
money: <spring:eval expression="sampleVO.money"/>
Run Code Online (Sandbox Code Playgroud)
- - -期望
money : 100,000
Run Code Online (Sandbox Code Playgroud)
------但是,结果是
money : 100000
Run Code Online (Sandbox Code Playgroud)
问题是什么?我该怎么办?
声明字段应格式化为数字.支持按样式或自定义模式字符串格式化.可以应用于任何JDK java.lang.Number类型.
您正在原始字段上使用它.显然,这不包括在内.用Integer而不是int.
编辑:更确切地说,不是java.lang.Number涵盖所有可能的子类.以下是相关的摘录NumberFormatAnnotationFormatterFactory:
public NumberFormatAnnotationFormatterFactory() {
Set<Class<?>> rawFieldTypes = new HashSet<Class<?>>(7);
rawFieldTypes.add(Short.class);
rawFieldTypes.add(Integer.class);
rawFieldTypes.add(Long.class);
rawFieldTypes.add(Float.class);
rawFieldTypes.add(Double.class);
rawFieldTypes.add(BigDecimal.class);
rawFieldTypes.add(BigInteger.class);
this.fieldTypes = Collections.unmodifiableSet(rawFieldTypes);
}
Run Code Online (Sandbox Code Playgroud)
这意味着缺少来自并发api的Atomic*类,以及来自Commons/Lang等框架的所有自定义Number实现.
更新:(请参阅注释)您还需要添加<mvc:annotation-driven>到context.xml.