Bom dia Amigos,
Estou com o seguinte problema:
java.lang.NumberFormatException: For input string: “categoriaRenda”.
Agradeço caso possam ajudar pois estou travado neste nó e o tempo do projeto está se esgotando (Faculdade). Obrigado.
Segue códigos:
VIEW:
<p:dataTable value="#{rendaBean.retornaRendaList()}" id="listRenda"
var="renda" rowKey="#{renda.idRenda}" paginator="true"
resizeMode="expand"
style="position: absolute; bottom:70px; left:2px;" rows="3"
emptyMessage="Nenhuma Renda cadastrada">
<p:column headerText="Categoria Renda">
<h:outputText value="#{renda.categoriaRenda}" />
</p:column>
<p:column headerText="Valor Renda">
<h:outputText value="#{renda.valorRenda}" />
</p:column>
<p:column headerText="Data Renda">
<h:outputText value="#{renda.dataRenda}">
<f:convertDateTime locale="pt_BR" dateStyle="long"
pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">Operações</f:facet>
<p:commandButton update="formulario" onclick="update" id="remover" value="Excluir"
actionListener="#{rendaBean.removeRenda(renda)}">
<f:setPropertyActionListener target="#{renda}"
value="#{renda.idRenda}" />
</p:commandButton>
</p:column>
</p:dataTable>
CLASSE BEAN:
//RETORNA LISTA RENDAS
public List<Renda> retornaRendaList(){
rendaList = rendadao.retornaListaRenda();
System.out.println("depois");
return rendaList;
}
CLASSE DAO:
@SuppressWarnings("unchecked")
public List<Renda> retornaListaRenda(){
System.out.println("teste");
EntityManagerFactory emf = Persistence.createEntityManagerFactory("calcPU");
EntityManager em = emf.createEntityManager();
{
Serializador serializador = new Serializador();
usuario = null;
try{
usuario = (Usuario) serializador.deserializar("c:/Users/Mayque.silva/Desktop/usuario/usuario.txt");
System.out.println("Deserializado com sucesso!222");
}catch(Exception ex){
System.err.println("Falha ao deserializar! - " + ex.toString());
}
List<Renda> listaRenda = new ArrayList<Renda>();
String sql = "select * from Renda where usuario_cpf=?1";
listaRenda = em.createNativeQuery(sql).setParameter(1, usuario.getCpf()).getResultList();
if (listaRenda.size()==0){
System.out.println("NULO");
return null;
}else{
System.out.println("NAO NULO");
return listaRenda;
}
}
po amigão, mostra a string que esta causando isso
Opa peczeny, obrigado pela resposta. Segue abaixo o código da entidade:
package model;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name="renda")
public class Renda {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
private int idrenda;
private Double valorRenda;
private String categoriaRenda;
@Temporal(value=TemporalType.DATE)
private Date dataRenda;
private Usuario usuario;
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public int getIdRenda() {
return idrenda;
}
public void setIdRenda(int id) {
this.idrenda = id;
}
public Double getValorRenda() {
return valorRenda;
}
public int getIdrenda() {
return idrenda;
}
public void setIdrenda(int idrenda) {
this.idrenda = idrenda;
}
public void setValorRenda(Double valorRenda) {
this.valorRenda = valorRenda;
}
public String getCategoriaRenda() {
return categoriaRenda;
}
public void setCategoriaRenda(String categoriaRenda) {
this.categoriaRenda = categoriaRenda;
}
public Date getDataRenda() {
return dataRenda;
}
public void setDataRenda(Date dataRenda) {
this.dataRenda = dataRenda;
}
}
NO BANCO ESTÁ:
categoriaRenda VARCHAR(45), NOT NULL;
puxa amigão. alguma string esta gerando esta exception. vc pode mostrar qual é?
de repente vc tem
R$ 1.234,67
e isso da zica
Poisé, analisei o código e não sei de onde ele está puxando essa exception, para alimentar esse campo ele está indo no banco e buscando uma lista alimentando uma arraylist, já procurei de todas as formas o erro porém ainda não encontrei.
puxa magrao coloca um print ( "lendo X do banco de dados ")
quando der erro vc vai descobrir vendo a ultima qual que deu erro.
ou vc usa um debugger e seta um breakpoint maroto
amigo a melhor opção e usar um debug do eclipse ou do netbeans não sei qual ide vc usar, amigoeu tive muito desse erro em um projeto de jsf que eu tava fazendo pra faculdade eu me lembro que resolvir anotando o atributo no bean no teu caso o valorRenda com algo assim:
@NumberFormat(style = Style.NUMBER, pattern = “#,###.###”)
ou
@patterne("#.###,##")
procura na net não lembro direito da anotação;
mas ja tive muito esse problema ai usando jsf na hora de converter o número para outro formato, no caso número monetário.
Amigo achei a anotação é essa @NumberFormat(pattern="#,###.##") faz um teste ai.
Olha o trecho de código abaixo:
String deveriaSerNumero = "categoriaRenda"; int meuNumero = Integer.parseInt(deveriaSerNumero);
Ele vai lançar a seguinte exception com stack trace:
Exception in thread "main" java.lang.NumberFormatException: For input string: "categoriaRenda" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at <myPackage>.<myClass>.main(MyClass.java:<Numero Da Linha>)
Repare que:
-
A própria exception te diz o valor que você está passando incorreto, no seu caso (e no exemplo) o valor é “categoriaRenda”. Parece que ao invés de usar a variável, você está usando a string literal no lugar em algum ponto.
-
A última linha da stack trace (no exemplo) te mostra exatamente em qual linha do seu código o problema está (no exemplo é o )
Com isso você deve ter mais chances de achar onde exatamente e o que está causando esse erro.
Tive o mesmo problema e a solução foi a seguinte:
Meu dataTable era para single select mas apontava pra uma lista
<p:dataTable selection=“#{controller.listaSelecionada}” rowKey=“#{obj.id}”
Alterei para:
<p:dataTable selection=“#{controller.objSelecionado}” rowKey=“#{obj.id}”
E funcionou!