控制台的@NumberFormat 注解

@NumberFormat Annotation for console

我正在使用

 @NumberFormat(style = Style.CURRENCY)
 private Double value = 50.00;

在我的 Spring MVC 项目中。根据参考文档, "mvc:annotation-driven"

足以绑定默认格式化程序,如@NumberFormat。我成功地将它显示在我的 JSP 中,但是当我尝试通过

将它打印到我的控制器中的控制台时
System.out.println(value);

它根本不格式化值。在我的研究中,我发现 JSP 的多个示例,但控制台的 none 的示例。为什么它不在控制台中格式化数字?

方法参数在 Java 中按值传递。如果你调用像 println 这样的方法,你只是传递了名为 value 的成员变量的 - 而不是变量本身。

println方法没有办法知道这个值是从哪里来的,所以它也没有办法知道它来自名为value的成员变量,而这个成员变量恰好有注释 - println 方法无法检查变量本身并发现注释,因为它不知道值来自何处。

当您在 JSP 中执行此操作时,您没有使用普通的 Java 方法调用,您可能正在使用一些 Spring 特定的标记,您将名称传递给该标记的变量。 Spring 标签处理程序然后将查找变量并找到注释,它使用它来确定如何格式化值。