控件没有正确处理NAN的情况

实体属性是double类型的,值为NaN,控件直接乱码了
111

要么就显示NaN要么显示空才合理

(CUBA 官方确定这是 issue 在:https://www.cuba-platform.com/discuss/t/textfield-does-not-handle-nan-correctly/9621/3)

有意思。不过这个问题建议你们在编码的时候解决。因为不管是这个问号还是 NaN,展示给最终用户都是不合理的。也许展示空稍微好一些,但是用户没法区分 NaN 的空和真正的空。

这是控件的BUG啊,什么叫编码问题?Java的Double类型上有isNaN方法去判断。。。这本就是一个正常的值。

NaN = not a number,意思是这个值不是数字。浮点类型的值不是数字不能说是正常吧?
我不是说这是你编码的问题,是说这个问题你需要通过编码来解决,比如避免除零,避免负数开方等。因为浮点数的 NaN 在业务系统中没有明确能对应的现实数字。

java中的NAN是这么定义的:
public static final double NaN = 0.0d / 0.0;

既然JAVA里的Double类型的变量能承载这个值,而且也提供了API判断,怎么能说是不正常,这只是Double类型的一种特殊情况而已,你把一个字符串赋给Double才叫不正常,既然JAVA都支持,怎么叫业务系统不能对应。

建议你先看一下JAVA语法,再看看这个地方是不是应该在底层去处理,而不是丢给用户。

业务系统不能对应是说在现实中找不到一个数能对应 0/0。 也就是说这个 NaN 在现实中没有意义。只有在程序中有意义,这就是为什么 Java 会提供 isNaN 方法。这个就是让程序员去处理这种数据异常。Vaadin 已经显示了一个带问号的图片,这就是底层的处理。因为你跟你的客户说这里要显示 NaN,客户会问你,什么是 NaN?如果你显示一个带问号的图片,客户就明白了,这里的数字不正常。
希望你们在做系统的时候不要只是以程序员的角度思考问题,要从客户和用户的角度出发。

这个问题修复了。应该在 7.1.0 正式版会带上。
@weborld 到时候你注意看看,是否 NaN 显示为空了。
https://github.com/cuba-platform/cuba/issues/2280