想象以下情况Long critId = Long.valueOf(criteriaIdentifier);
如果最初加载视图,则criteriaIdentifier可能为null,之后,我将根据JSF视图中的selectedItem设置值。

但是,Long.valueOf(criteriaIdentifier)会引发NumberFormatException-如果无法将字符串解析为long(即null)。

我曾经考虑过将Id默认设置为默认-1,但我想知道是否有更好的做法。

PS:从技术上讲,criteriaIdentifier不能为-1,因为这些值是使用序列生成器从数据库中设置的,所以我应该知道-1是默认值并正确地执行了默认操作

最佳答案

您可以使用Apache Commons中的NumberUtils。这是null安全的,您可以选择指定默认值。

例:

NumberUtils.toLong(null) = 0L
NumberUtils.toLong("")   = 0L
NumberUtils.toLong("1")  = 1L

NumberUtils.toLong(null, 1L) = 1L
NumberUtils.toLong("", 1L)   = 1L
NumberUtils.toLong("1", 0L)  = 1L

有关更多信息,请检查API

10-08 17:09