3
Talk to me, people! I’m having a problem to popular a Datatable, I’m using Jsf, CDI.
I believe that the name of teacher is coming normal because he is an object and the pupil is a List, But I don’t know how to fix it.
I’m trying to get the attribute nome in class Usuario that belongs to the Aluno as follows:
GestaoProjetosBean(my design bean) -> Aluno.java-> Usuario.java -> nome
And I get the following mistake:
nov 12, 2017 6:42:24 pm com.sun.faces.application.view.Faceletviewhandlingstrategy handleRenderException GRAVE: Error Rendering View[/pages/Gestaoprojetos.xhtml] java.lang.Numberformatexception: For input string: "user" at java.lang.Numberformatexception.forInputString(Unknown Source) at java.lang.Integer.parseint(Unknown Source) at java.lang.Integer.parseint(Unknown Source) at javax.el.Listelresolver.coerce(Listelresolver.java:150) at javax.el.Listelresolver.getValue(Listelresolver.java:67) at com.sun.faces.el.Demuxcompositeelresolver. _getValue(Demuxcompositeelresolver.java:176) at com.sun.faces.el.Demuxcompositeelresolver.getValue(Demuxcompositeelresolver.java:203) at org.apache.el.parser.Astvalue.getValue(Astvalue.java:169) at org.apache.el.ValueExpressionImpl.getValue(Valueexpressionimpl.java:184) at org.jboss.Weld.el.Weldvalueexpression.getValue(Weldvalueexpression.java:50) at com.sun.faces.facelets.el.TagValueExpression.getValue(Tagvalueexpression.java:109) at javax.faces.Component.ComponentStateHelper.Eval(Componentstatehelper.java:194) at javax.faces.Component.ComponentStateHelper.Eval(Componentstatehelper.java:182) at javax.faces.Component.UIOutput.getValue(Uioutput.java:174) at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(Htmlbasicinputrenderer.java:205) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(Htmlbasicrenderer.java:355) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(Htmlbasicrenderer.java:164) at javax.faces.Component.UIComponentBase.encodeEnd(Uicomponentbase.java:920) at javax.faces.Component.UIComponent.encodeAll(Uicomponent.java:1863) at org.primefaces.Component.column.Column.renderChildren(Column.java:352) at org.primefaces.Component.datatable.Datatablerenderer.encodeCell(Datatablerenderer.java:1051) at org.primefaces.Component.datatable.Datatablerenderer.encodeRow(Datatablerenderer.java:999) at org.primefaces.Component.datatable.Datatablerenderer.encodeRows(Datatablerenderer.java:907) at org.primefaces.Component.datatable.Datatablerenderer.encodeTbody(Datatablerenderer.java:854) at org.primefaces.Component.datatable.Datatablerenderer.encodeTbody(Datatablerenderer.java:814) at org.primefaces.Component.datatable.Datatablerenderer.encodeRegularTable(Datatablerenderer.java:290))
nov 12, 2017 6:42:24 pm com.sun.faces.context.Exceptionhandlerimpl log FATAL: JSF1073: java.lang.Numberformatexception obtained during processing of RENDER_RESPONSE 6: Uicomponent-Clientid=, Message=For input string: "user" nov 12, 2017 6:42:24 pm com.sun.faces.context.Exceptionhandlerimpl log FATAL: For input string: "user" java.lang.Numberformatexception: For input string: "user" at java.lang.Numberformatexception.forInputString(Unknown Source) at java.lang.Integer.parseint(Unknown Source) at java.lang.Integer.parseint(Unknown Source) at javax.el.Listelresolver.coerce(Listelresolver.java:150) at javax.el.Listelresolver.getValue(Listelresolver.java:67) at com.sun.faces.el.Demuxcompositeelresolver. _getValue(Demuxcompositeelresolver.java:176) at com.sun.faces.el.Demuxcompositeelresolver.getValue(Demuxcompositeelresolver.java:203) at org.apache.el.parser.Astvalue.getValue(Astvalue.java:169) at org.apache.el.ValueExpressionImpl.getValue(Valueexpressionimpl.java:184) at org.jboss.Weld.el.Weldvalueexpression.getValue(Weldvalueexpression.java:50) at com.sun.faces.facelets.el.TagValueExpression.getValue(Tagvalueexpression.java:109) at javax.faces.Component.ComponentStateHelper.Eval(Componentstatehelper.java:194) at javax.faces.Component.ComponentStateHelper.Eval(Componentstatehelper.java:182) at javax.faces.Component.UIOutput.getValue(Uioutput.java:174) at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(Htmlbasicinputrenderer.java:205) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(Htmlbasicrenderer.java:355) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(Htmlbasicrenderer.java:164) at javax.faces.Component.UIComponentBase.encodeEnd(Uicomponentbase.java:920) at javax.faces.Component.UIComponent.encodeAll(Uicomponent.java:1863) at org.primefaces.Component.column.Column.renderChildren(Column.java:352) at org.primefaces.Component.datatable.Datatablerenderer.encodeCell(Datatablerenderer.java:1051) at org.primefaces.Component.datatable.Datatablerenderer.encodeRow(Datatablerenderer.java:999) at org.primefaces.Component.datatable.Datatablerenderer.encodeRows(Datatablerenderer.java:907) at org.primefaces.Component.datatable.Datatablerenderer.encodeTbody(Datatablerenderer.java:854) at org.primefaces.Component.datatable.Datatablerenderer.encodeTbody(Datatablerenderer.java:814) at org.primefaces.Component.datatable.Datatablerenderer.encodeRegularTable(Datatablerenderer.java:290) at org.primefaces.Component.datatable.Datatablerenderer.encodeMarkup(Datatablerenderer.java:252) at org.primefaces.Component.datatable.Datatablerenderer.encodeEnd(Datatablerenderer.java:87) at javax.faces.Component.UIComponentBase.encodeEnd(Uicomponentbase.java:920) at javax.faces.Component.UIComponent.encodeAll(Uicomponent.java:1863) at javax.faces.render.Renderer.encodeChildren(Renderer.java:176) javax.faces.Component.UIComponentBase.encodeChildren(Uicomponentbase.java:890) at javax.faces.Component.UIComponent.encodeAll(Uicomponent.java:1856) at javax.faces.Component.UIComponent.encodeAll(Uicomponent.java:1859) at javax.faces.Component.UIComponent.encodeAll(Uicomponent.java:1859) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(Faceletviewhandlingstrategy.java:458) at com.sun.faces.application.view.MultiViewHandler.renderView(Multiviewhandler.java:134) at javax.faces.application.ViewHandlerWrapper.renderView(Viewhandlerwrapper.java:337) at javax.faces.application.ViewHandlerWrapper.renderView(Viewhandlerwrapper.java:337) with.sun.faces.lifecycle.Renderresponsephase.execute(Renderresponsephase.java:120) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.Lifecycleimpl.render(Lifecycleimpl.java:219) at javax.faces.webapp.FacesServlet.service(Facesservlet.java:659) at org.apache.Catalina.core.Applicationfilterchain.internalDoFilter(Applicationfilterchain.java:231) at org.apache.Catalina.core.Applicationfilterchain.doFilter(Applicationfilterchain.java:166) at org.apache.Tomcat.websocket.server.WsFilter.doFilter(Wsfilter.java:52) at org.apache.Catalina.core.Applicationfilterchain.internalDoFilter(Applicationfilterchain.java:193) at org.apache.Catalina.core.Applicationfilterchain.doFilter(Applicationfilterchain.java:166) at org.apache.Catalina.core.Standardwrappervalve.invoke(Standardwrappervalve.java:198) at org.apache.Catalina.core.Standardcontextvalve.invoke(Standardcontextvalve.java:96) at org.apache.Catalina.authenticator.Authenticatorbase.invoke(Authenticatorbase.java:478) at org.apache.Catalina.core.Standardhostvalve.invoke(Standardhostvalve.java:140) at org.apache.Catalina.valves.Errorreportvalve.invoke(Errorreportvalve.java:80) at org.apache.Catalina.valves.Abstractaccesslogvalve.invoke(Abstractaccesslogvalve.java:624) at org.apache.Catalina.core.Standardenginevalve.invoke(Standardenginevalve.java:87) at org.apache.Catalina.connector.Coyoteadapter.service(Coyoteadapter.java:342) at org.apache.Coyote.http11.Http11processor.service(Http11processor.java:799) at org.apache.Coyote.AbstractProcessorLight.process(Abstractprocessorlight.java:66) at org.apache.Coyote.Abstractprotocol$Connectionhandler.process(Abstractprotocol.java:861) at org.apache.Tomcat.util.net.Nioendpoint$Socketprocessor.doRun(Nioendpoint.java:1455) at org.apache.Tomcat.util.net.SocketProcessorBase.run(Socketprocessorbase.java:49) at java.util.Concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.Concurrent.Threadpoolexecutor$Worker.run(Unknown Source) at org.apache.Tomcat.util.threads.Taskthread$Wrappingrunnable.run(Taskthread.java:61) at java.lang.Thread.run(Unknown Source)
This is my page I’m having trouble getting the name of the student from the bank, because the name of the teacher is coming normal.
Gestaoprojetos.xhtml
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
template="/WEB-INF/template/Layout.xhtml">
<ui:define name="titulo">
<title>Gestão Projetos</title>
</ui:define>
<ui:define name="conteudo">
<f:metadata>
<f:viewAction action="#{gestaoProjetosBean.todosProjetos}" />
</f:metadata>
<p:dataTable id="projetosDataTable" value="#{gestaoProjetosBean.listaProjetos}"
var="projeto" emptyMessage="Nenhuma informação a ser exibida"
paginator="true" rows="10" paginatorPosition="bottom"
selectionMode="single" selection="#{gestaoProjetosBean.projeto}" rowKey="#{projeto.id}">
<p:ajax event="rowSelect" update="frm:toolbar" />
<p:ajax event="rowUnselect" update="frm:toolbar" />
<p:column headerText="Título" sortBy="#{projeto.titulo}">
<h:outputText value="#{projeto.titulo}" />
</p:column>
<!--AQUI O PROFESSOR VEM NORMAL -->
<p:column headerText="Professor responsável">
<h:outputText value="#{projeto.professor.usuario.nome}" />
</p:column>
<!-- AQUI É O PROBLEMA QUE NÃO VEM O NOME ALUNO -->
<p:column headerText="Aluno" >
<h:outputText value="#{projeto.aluno.usuario.nome}" />
</p:column>
</p:dataTable>
</ui:composition>
Gestaoprojetosbean.java(My bean)
@Named
@ViewScoped
public class GestaoProjetosBean implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private Projetos projetos;
@Inject
private FacesMessages messages;
@Inject
private CadastroProjetoService cadastroProjetoService;
private List<Projeto> listaProjetos;
private String termoPesquisa;
private Projeto projeto;
public void prepararNovoProjeto() {
projeto = new Projeto();
this.projeto.setUsuario(new Usuario());
//this.projeto.setAluno(new Aluno());
this.projeto.setProfessor(new Professor());
}
public void prepararEdicao() {
}
public void salvar() {
cadastroProjetoService.salvar(projeto);
atualizarRegistros();
messages.info("Projeto salvo com sucesso!");
RequestContext.getCurrentInstance().update(Arrays.asList(
"frm:monografiasDataTable", "frm:messages"));
}
public void excluir() {
cadastroProjetoService.excluir(projeto);
projeto = null;
atualizarRegistros();
messages.info("Projeto excluída com sucesso!");
}
public void pesquisar() {
listaProjetos = projetos.pesquisar(termoPesquisa);
if (listaProjetos.isEmpty()) {
messages.info("Sua consulta não retornou registros.");
}
}
public void todosProjetos() {
listaProjetos = projetos.todas();
}
private void atualizarRegistros() {
if (jaHouvePesquisa()) {
pesquisar();
} else {
todosProjetos();
}
}
private boolean jaHouvePesquisa() {
return termoPesquisa != null && !"".equals(termoPesquisa);
}
public List<Projeto> getListaProjetos() {
return listaProjetos;
}
public String getTermoPesquisa() {
return termoPesquisa;
}
public void setTermoPesquisa(String termoPesquisa) {
this.termoPesquisa = termoPesquisa;
}
public Projeto getProjeto() {
return projeto;
}
public void setProjeto(Projeto projeto) {
this.projeto = projeto;
}
public boolean isProjetoSeleciona() {
return projeto != null && projeto.getId() != null;
}
}
Java student.
@Entity
@Table(name="aluno")
public class Aluno implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "usuario_id", nullable = false)
private Usuario usuario;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Aluno other = (Aluno) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
return "Aluno [id=" + id + "]";
}
}
Java user.
@Entity
@Table(name="usuario")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotEmpty
@Column(nullable = false, length = 40)
private String nome;
@NotEmpty
@Email
@Column(nullable = false, length = 40)
private String email;
@NotNull
@Column(nullable = false, length = 8)
private Long matricula;
@NotEmpty
@Column(nullable = false, length = 8)
private String senha;
@Column(name = "ultimo_acessso")
@Temporal(TemporalType.DATE)
private Date ultimoAcesso;
@Transient
private Professor professor;
@Transient
private List <Aluno> aluno;
public Usuario() {
super();
}
public Usuario(Long matricula, String senha) {
super();
this.matricula = matricula;
this.senha = senha;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public Date getUltimoAcesso() {
return ultimoAcesso;
}
public void setUltimoAcesso(Date ultimoAcesso) {
this.ultimoAcesso = ultimoAcesso;
}
public Long getMatricula() {
return matricula;
}
public void setMatricula(Long matricula) {
this.matricula = matricula;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Professor getProfessor() {
return professor;
}
public void setProfessor(Professor professor) {
this.professor = professor;
}
public List<Aluno> getAluno() {
return aluno;
}
public void setAluno(List<Aluno> aluno) {
this.aluno = aluno;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Usuario other = (Usuario) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
return "Usuario [id=" + id + "]";
}
}
Java project.
@Entity
@Table(name = "projeto")
public class Projeto implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotEmpty
@Column(nullable = false, length = 120)
private String titulo;
@NotEmpty
@Column(nullable = false)
private String descricao;
@NotNull
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "professor_id", nullable = false)
private Professor professor;
@ManyToMany
@JoinTable(name="projeto_aluno", joinColumns=
{@JoinColumn(name="projeto_id")}, inverseJoinColumns=
{@JoinColumn(name="aluno_id")})
private List <Aluno> aluno;
@Transient
private Usuario usuario;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Professor getProfessor() {
return professor;
}
public void setProfessor(Professor professor) {
this.professor = professor;
}
public List<Aluno> getAluno() {
return aluno;
}
public void setAluno(List<Aluno> aluno) {
this.aluno = aluno;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Projeto other = (Projeto) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
return "Projeto [id=" + id + "]";
}
}
What is your intention? The error is exactly what you said, there is no attribute
Alunoin classProjeto. There is aListofAluno.– Henrique Santiago
You want to show all the students in this project?
– Henrique Santiago
Opa Henrique blz! I want to show in the Datatable line the title, teacher and student who are related to this project, so I do not want a list of students but the student related to this project
– Daniel Azevedo
but you have a collection, a list of students, and not just a.
– Henrique Santiago
Yes true, but excuse my question, I’m new to development. In @manytomany mapping I could only do with the 'student' attribute as
List, I couldn’t leave it as the attribute of the guyAluno, it has to beprivate Aluno aluno?– Daniel Azevedo
Dude, you have to study it in databases and jpa/Hibernate. Your problem lies in the basis of the technologies you are using. Read about database relationships and then see how jpa provides those relationships with those annotations
@OneTomany,@ManyToMany........– Henrique Santiago
Valeu Henrique!
– Daniel Azevedo