您好我收到以下错误:
2014-09-26T14:17:40.779-0300|Grave: 'java.lang.NumberFormatException' recebido ao invocar escuta de a��o '#{comentario.cancelarAtendimento}' para o componente 'j_idt140'
2014-09-26T14:17:40.780-0300|Grave: java.lang.NumberFormatException: For input string: ""
我创建了这个格式化程序:
DateFormat formatter = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("pt", "BR"));
我希望以这种方式从会话中检索日期:
if (sessao.getAttribute("dataInicial") != null)
{
dataInicial = (String) sessao.getAttribute("dataInicial");
dataIni = new java.sql.Date(formatter.parse(dataInicial).getTime());
}
然后我在这里传递dataIni
ocorrencias = cadastradorOcorrecia.pesquisarAvancada(usuario.getCodigo(), Integer.parseInt(pesqCodigo), pesquisaCliente, pesquisaStatus, pesquisaDepartamento, pesquisaSolicitante, pesquisaUltimoAtend, pesquisaSistema, dataIni, dataFi, pesquisaCriador,Integer.parseInt(pesquisaProduto),Integer.parseInt(pesquisaModulo));
这里我得到了numberFormatException --->谁能知道我做错了什么?
提前致谢
然后转到dao实例,以便用数据库检索信息。
答案 0 :(得分:1)
如果Integer.parseInt无法将字符串转换为整数,则会抛出NumberFormatException。在你的情况下,我会检查pesqCodigo,pesquisaProduto&的值。 pesquisaModulo。
的JavaDoc示例
Integer.parseInt(" 234"); ---> Throws NumberFormatException as it has space
Integer.parseInt(""); ---> Throws NumberFormatException as it is not parseable for an integer
Integer.parseInt(null); ---> Throws NumberFormatException and not npe
Integer.parseInt(" 234 ".trim()); ---> Doesnt throw NumberFormatException as it trims before trying to parse it.
修改强>
它不起作用也就不足为奇了。这可能会更好:
SimpleDateFormat sdf = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy",
Locale.ENGLISH);
然后要使用您所需的格式打印,您需要第二个SimpleDateFormat:
Date parsedDate = sdf.parse(date);
SimpleDateFormat print = new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
System.out.println(print.format(parsedDate));
注意: 您应该包含区域设置,就好像您的区域设置不是英语,可能无法识别日期名称 IST含糊不清,可能导致问题,因此您应该在输入中使用正确的时区名称。
答案 1 :(得分:0)
pesqCodigo
,pesquisaProduto
或pesquisaModulo
中至少有一个是不代表数字的字符串。
我认为与dataInicial
没有关系,因为DateFormat
不应该抛出NumberFormatException
。 Integer.parseInt()方法可以抛出此异常,所以只需看一下该函数的用法。