commons-langのStringUtils.isNumericを使う際の注意点としては空文字がtrueになる、という点です。
StringUtils.isNumeric(null) = false StringUtils.isNumeric("") = true #これがくせものです。 StringUtils.isNumeric(" ") = false StringUtils.isNumeric("123") = true StringUtils.isNumeric("12 3") = false StringUtils.isNumeric("ab2c") = false StringUtils.isNumeric("12-3") = false StringUtils.isNumeric("12.3") = false
StringUtils.isNotEmpty(hoge) && StringUtils.isNumeric(hoge)
のようにして、空文字でなくかつ数字として判定するとよさそうです。