Ola, pessoal.
Tenho um relacionamento ManyToMany
em meu sistema e quero em uma página carregar um combo SelectOneMenu, então, seria um Setor tem muitos procedimentos, desta forma um combo de procedimentos, mas estou com o erro abaixo. Poderiam me ajudar?
2018-04-01 21:46:05.0
userLogadoSessao
abr 02, 2018 8:37:54 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
GRAVE: Error Rendering View[/cadastro/cad_setor.xhtml]
javax.el.ELException: /cadastro/cad_setor.xhtml @47,72 value="#{procedimentoBeanView.procedimentos2}": Error reading 'procedimentos2' on type br.com.project.bean.view.ProcedimentoBeanView
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UISelectItems.getValue(UISelectItems.java:129)
at org.primefaces.renderkit.InputRenderer.getSelectItems(InputRenderer.java:55)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:71)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:65)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:70)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:57)
at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:204)
at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:121)
at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:58)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
at com.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:647)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at ……
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
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)
Caused by: javax.el.ELException: Error reading 'procedimentos2' on type br.com.project.bean.view.ProcedimentoBeanView
at javax.el.BeanELResolver.getValue(BeanELResolver.java:101)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at com.sun.el.parser.AstValue.getValue(AstValue.java:116)
at com.sun.el.parser.AstValue.getValue(AstValue.java:163)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
... 95 more
Caused by: org.hibernate.MappingException: Unknown entity: from Procedimento
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:693)
at org.hibernate.impl.SessionImpl.getOuterJoinLoadable(SessionImpl.java:1731)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1697)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
at br.com.framework.implementacao.crud.ImplemantacaoCRUD.findByQueryDinamica(ImplemantacaoCRUD.java:120)
at br.com.project.geral.controller.ProcedimentoController.getListProcedimento(ProcedimentoController.java:36)
at br.com.project.bean.view.ProcedimentoBeanView.getProcedimentos2(ProcedimentoBeanView.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
... 101 more
javax.el.ELException: /cadastro/cad_setor.xhtml @47,72 value="#{procedimentoBeanView.procedimentos2}": Error reading 'procedimentos2' on type br.com.project.bean.view.ProcedimentoBeanView
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UISelectItems.getValue(UISelectItems.java:129)
at org.primefaces.renderkit.InputRenderer.getSelectItems(InputRenderer.java:55)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:71)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:65)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:70)
….
Caused by: javax.el.ELException: Error reading 'procedimentos2' on type br.com.project.bean.view.ProcedimentoBeanView
at javax.el.BeanELResolver.getValue(BeanELResolver.java:101)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at com.sun.el.parser.AstValue.getValue(AstValue.java:116)
at com.sun.el.parser.AstValue.getValue(AstValue.java:163)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
... 95 more
Caused by: org.hibernate.MappingException: Unknown entity: from Procedimento
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:693)
at org.hibernate.impl.SessionImpl.getOuterJoinLoadable(SessionImpl.java:1731)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1697)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
at br.com.framework.implementacao.crud.ImplemantacaoCRUD.findByQueryDinamica(ImplemantacaoCRUD.java:120)
at br.com.project.geral.controller.ProcedimentoController.getListProcedimento(ProcedimentoController.java:36)
at br.com.project.bean.view.ProcedimentoBeanView.getProcedimentos2(ProcedimentoBeanView.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
... 101 more
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:494)
at
javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138)
….
@Audited
@Entity
@Table(name = "setor")
public class Setor implements Serializable {
private static final long serialVersionUID = 1L;
@IdentificaCampoPesquisa(descricaoCampo = "Código", campoConsulta = "id")
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@IdentificaCampoPesquisa(descricaoCampo = "Nome", campoConsulta = "nome", principal = 1)
@Column(name = "nome", nullable = false, length = 50)
private String nome;
@Column(name = "descricao", nullable = false, length = 100)
private String descricao;
@NotAudited
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name="setor_proced",
joinColumns={@JoinColumn(name="procedimento_id")},
inverseJoinColumns={@JoinColumn(name="setor_id")})
private List<Procedimento> procedimentos = new ArrayList<Procedimento>();
class Procedimento {
@Audited
@Entity
@Table(name = "procedimento")
public class Procedimento implements Serializable{
private static final long serialVersionUID = 1L;
@IdentificaCampoPesquisa(descricaoCampo = "Código", campoConsulta = "id")
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@IdentificaCampoPesquisa(descricaoCampo = "identificador", campoConsulta = "identificador", principal = 1)
@Column(name = "identificador", nullable = false, length = 50)
private String identificador;
@Column(name = "descricao", nullable = false, length = 100)
private String descricao;
@Column(name = "versao", nullable = false, length = 4)
private int versao = 0;
@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date dataHomologacao;
@IdentificaCampoPesquisa(descricaoCampo = "Setor", campoConsulta = "setor.nome")
@NotAudited
@Basic
@ManyToMany(mappedBy="procedimentos", cascade = CascadeType.ALL)
private List<Setor> setores = new ArrayList<Setor>();
@FacesConverter(forClass = Procedimento.class)
public class ProcedimentoConverter implements Converter, Serializable {
private static final long serialVersionUID = 1L;
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String codigo) {
// RECEBE CÓDIGO DO OBJETO
if (codigo != null && !codigo.isEmpty()) {
//CONSULTA NO BANCO
return (Procedimento) HibernateUtil.getCurrentSession().get(Procedimento.class, new Long(codigo));
}
return codigo;
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object objeto) {
// RECEBE OBJETO E RETORNA O CÓDIGO - TIPO STRING
if (objeto != null) {
Procedimento c = (Procedimento) objeto;
return c.getId() != null && c.getId() > 0 ? c.getId().toString() : null;
}
//RETORNA NULL CASO O OBJETO SEJA NULL
return null;
}
}
@Controller
public class ProcedimentoController extends ImplemantacaoCRUD<Procedimento> implements InterfaceCrud<Procedimento> {
private static final long serialVersionUID = 1L;
@Resource
private SrvProcedimento srvProcedimento;
@Resource
private RepositoryProcedimento repositoryProcedimento;
public List<SelectItem> getListProcedimento() throws Exception {
List<SelectItem> list = new ArrayList<SelectItem>();
List<Procedimento> procedimentos = super.findByQueryDinamica(" from Procedimento");
for (Procedimento procedimento : procedimentos) {
list.add(new SelectItem (procedimento.getId()));
}
return list;
}
}
@Controller
@Scope(value="session")
@ManagedBean(name="procedimentoBeanView")
public class ProcedimentoBeanView extends BeanManagerViewAbstract {
private static final long serialVersionUID = 1L;
private String url = "/cadastro/cad_procedimento.jsf?faces-redirect=true";
private String urlFind = "/cadastro/find_procedimento.jsf?faces-redirect=true";
private Procedimento objetoSelecionado = new Procedimento();
private List<Procedimento> procedimentos = new ArrayList<Procedimento>();
@Autowired
private ProcedimentoController procedimentoController;
public List<SelectItem> getProcedimentos2() throws Exception{
return procedimentoController.getListProcedimento();
}
}
@Controller
@Scope(value="session")
@ManagedBean(name="setorBeanView")
public class SetorBeanView extends BeanManagerViewAbstract {
private static final long serialVersionUID = 1L;
private String url = "/cadastro/cad_setor.jsf?faces-redirect=true";
private String urlFind = "/cadastro/find_setor.jsf?faces-redirect=true";
private Setor objetoSelecionado = new Setor();
private List<Setor> setores = new ArrayList<Setor>();
private List<Procedimento> procedimentos = new ArrayList<Procedimento>();
@Autowired
private SetorController setorController;
public void setSelectedList(Procedimento p){
objetoSelecionado.getProcedimentos().add(p);
//objetoSelecionado.setProcedimentos(procedimentos);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:sec="http://www.springframework.org/security/facelets/tags"
xmlns:util="http://java.sun.com/jsf/composite/components"
xmlns:p="http://primefaces.org/ui">
<ui:composition template="/templates/templatePrincipal.xhtml">
<ui:define name="corpo">
<h:form id="formCadastro" prependId="false" role="form">
<!-- USANDO JSP ABAIXO: CRIAMOS UMA VARIAVEL ONDE VAMOS DEFINIR A OPÇÃO DE CADASTRO OU NÃO -->
<c:set var="isCadastro" value="false" scope="view"/>
<p:panel id="painelSetor" header="Cadastro de Setor">
<h:panelGrid id="gridSetor" columns="3">
<!-- CAD_CÓDIGO -->
<h:outputLabel for="id" value="Código " id="labelId"/>
<p:inputText id="id" styleClass="estiloIdCadastro" disabled="true" value="#{setorBeanView.objetoSelecionado.id}"/>
<h:outputLabel/>
<!-- CAD_NOME -->
<h:outputLabel value="Nome * :" id="labelNomeConsultaSetor" for="setorNome"/>
<p:inputText id="setorNome" styleClass="estyleInputName" required="true" maxlength="50" value="#{setorBeanView.objetoSelecionado.nome}"
requiredMessage="Informe o nome!" placeholder="Informe o nome"/>
<p:message for="setorNome"/>
<!-- CAD_DESCRICAO -->
<h:outputLabel value="Descrição * :" id="labelDescConsultaSetor" for="setorDesc"/>
<p:inputText id="setorDesc" styleClass="estyleInputName" required="true" maxlength="100" value="#{setorBeanView.objetoSelecionado.descricao}"
requiredMessage="Informe descrição do setor!" placeholder="Descrição setor"/>
<p:message for="setorDesc"/>
<h:outputLabel for="proced" id="labelProced" value="Procedimento * :"/>
<p:selectOneMenu id="proced" style="width: 200px;" styleClass="estyleInputName" value="#{setorBeanView.selectedList}">
<f:selectItem noSelectionOption="true" itemLabel="Selecione um procedimento"/>
<f:selectItems value="#{procedimentoBeanView.procedimentos2}"/>
</p:selectOneMenu>
</h:panelGrid>
</p:panel>