想象以下情况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。