编程语言
首页 > 编程语言> > java – SpEL(@NumberFormat)无效

java – SpEL(@NumberFormat)无效

作者:互联网

—- SampleVO

@NumberFormat(pattern = "###,##0")
private int money=100000;

—–控制器

@RequestMapping(value="/com/spelSample.do")
public String spelSample(SampleVO sampleVO,  Model model){

    model.addAttribute("sampleVO", sampleVO);

    return "sampleResult";
}

——- sampleResult.jsp

money: <spring:eval expression="sampleVO.money"/>

– – -期望

money : 100,000

——但是,结果是

money : 100000

问题是什么?
我该怎么办?

解决方法:

the @NumberFormat docs开始:

Declares that a field should be formatted as a number. Supports
formatting by style or custom pattern string. Can be applied to any
JDK java.lang.Number type
.

您正在原始字段上使用它.显然,这不包括在内.使用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);
}

这意味着缺少来自并发api的Atomic *类,以及来自Commons / Lang等框架的所有自定义Number实现.

更新:(见评论)你还需要添加< mvc:annotation-driven>到您的context.xml.

标签:java,spring-mvc,spring,annotations,spring-el
来源: https://codeday.me/bug/20190621/1253445.html