Fala galera, blz?
Galera estou desenvolvendo meu TCC utilizando Primefaces e to com um problema, que não sei mais como resolver, tenho um selectonemenu dentro de um dialog, porém ele não está setando o valor, eu consigo carregar o selectonemenu, porém na hora que eu seleciono a opção ele não seta na variavel, galera preciso muito de ajuda pois meu prazo pra entregar meu TCC está esgotando, segue meus códigos
XHTML
<ui:composition template="/WEB-INF/template/layoutPadrao.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:o=“http://omnifaces.org/ui”>
<f:metadata>
<o:viewParam name="usuarioEstufa" value="#{usuarioEstufaBean.usuarioEstufa}"></o:viewParam>
</f:metadata>
<ui:define name="conteudo">
<h:form id="frmUsuarioEstufa">
<p:panel header="Cadastro de Usuário e Estufas">
<p:messages autoUpdate="true" closable="true"/>
<h:panelGrid columns="2">
<p:outputLabel value="Usuário" for="usuario"/>
<p:selectOneMenu id="usuario" value="#{usuarioEstufaBean.usuarioEstufa.usuario}" required="true">
<f:selectItem itemLabel=""/>
<f:selectItems value="#{usuarioEstufaBean.usuarios}" var="usuario"
itemLabel="#{usuario.nome}" itemValue="#{usuario}"/>
</p:selectOneMenu>
</h:panelGrid>
</p:panel>
<ui:include src="/WEB-INF/estufa/conteudoEstufa2.xhtml"/>
<p:commandButton value="Salvar" action="#{usuarioEstufaBean.salvar}" update="@form"
rendered="#{usuarioEstufaBean.usuarioEstufa.usuario.notUsuarioAssociado}"/>
<p:commandButton value="Alterar" action="#{usuarioEstufaBean.alterar}" update="@form"
rendered="#{usuarioEstufaBean.usuarioEstufa.usuario.usuarioAssociado}"/>
<p:button value="Adicionar Nova Estufa" onclick="PF('dialog').show(); return false;"
rendered="#{usuarioEstufaBean.usuarioEstufa.id != null}"/>
</h:form>
<h:form>
<p:dialog header="Inserir Nova Estufa" draggable="true" resizable="true" widgetVar="dialog"
appendTo="@(body)">
<h:panelGrid columns="2">
<p:outputLabel value="Nome Fantasia"/>
<h:selectOneMenu id="combo" value="#{usuarioEstufaBean.linhaEditavel}" converter="estufa">
<f:selectItem itemLabel=""/>
<f:selectItems value="#{usuarioEstufaBean.estufas}" var="estufa"
itemLabel="#{estufa.nomeFantasia}" itemValue="#{estufa}"/>
</h:selectOneMenu>
<p:commandButton value="Adicionar Nova Estufa" action="#{usuarioEstufaBean.adicionarNovaEstufa}"
update="frmUsuarioEstufa:idUsuarioEstufa" process="combo @this"/>
<p:button value="Cancelar" onclick="PF('dialog').hide(); return false;"/>
</h:panelGrid>
</p:dialog>
</h:form>
</ui:define>
</ui:composition>
Bean
package com.fatec.controller;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import com.fatec.dao.EstufaDAO;
import com.fatec.modal.Estufa;
import com.fatec.modal.Usuario;
import com.fatec.modal.UsuarioEstufa;
import com.fatec.service.EstufaService;
import com.fatec.service.UsuarioEstufaService;
import com.fatec.service.UsuarioService;
import com.fatec.util.Util;
@Named
@ViewScoped
public class UsuarioEstufaBean implements Serializable {
private static final long serialVersionUID = 1L;
private UsuarioEstufa usuarioEstufa;
private List<Usuario> usuarios;
private UsuarioService uService = new UsuarioService();
private UsuarioEstufaService service = new UsuarioEstufaService();
private Estufa estufaLinhaEditavel;
private EstufaDAO dao = new EstufaDAO();
private List<UsuarioEstufa> usuarioEstufas;
private UsuarioEstufa usuarioEstufaSelecionado;
private Estufa linhaEditavel = new Estufa();
private List<Estufa> estufas;
private EstufaService eService = new EstufaService();
@PostConstruct
public void carregarUsuario(){
this.usuarios = this.uService.filtar(this.getUsuarioEstufa().getUsuario());
if(Util.isNotPostback()){
this.adicionarEstufaVazio();
}
}
public void carregarEstufas(){
this.estufas = this.eService.filtar(linhaEditavel);
}
public void adicionarEstufaVazio(){
Estufa estufa = new Estufa();
estufa.setId(null);
estufa.setNomeFantasia(null);
this.usuarioEstufa.getEstufas().add(0, estufa);
}
public void adicionarEstufa(){
Estufa estufa = this.usuarioEstufa.getEstufas().get(0);
if(this.estufaLinhaEditavel != null){
estufa.setId(this.estufaLinhaEditavel.getId());
estufa.setNomeFantasia(this.estufaLinhaEditavel.getNomeFantasia());
this.adicionarEstufaVazio();
this.estufaLinhaEditavel = new Estufa();
}
}
public void removerEstufaVazia(){
Estufa estufa = this.usuarioEstufa.getEstufas().get(0);
if(estufa != null && estufa.getId() == null){
this.usuarioEstufa.getEstufas().remove(0);
}
}
public void removerEstufa(Estufa estufa){
for(int i = 0; i < this.usuarioEstufa.getEstufas().size(); i++){
Estufa etf = this.usuarioEstufa.getEstufas().get(i);
if(estufa.equals(etf)){
this.usuarioEstufa.getEstufas().remove(etf);
if(this.usuarioEstufa.getId() != null){
this.adicionarEstufaVazio();
}
}
}
}
public List<Estufa> buscarEstufa(String nome){
return this.dao.porNome(nome);
}
public void adicionarNovaEstufa(){
List<Estufa> encontrados = this.eService.filtar(linhaEditavel);
for(int i = 0; i < encontrados.size(); i++){
Estufa encontrado = encontrados.get(i);
if(encontrado.getNomeFantasia().equals(getLinhaEditavel().getNomeFantasia())){
this.getLinhaEditavel().setId(this.getLinhaEditavel().getId());
this.getLinhaEditavel().setNomeFantasia(this.getLinhaEditavel().getNomeFantasia());
break;
}
}
this.usuarioEstufa.getEstufas().add(this.getLinhaEditavel());
}
public void salvar(){
this.removerEstufaVazia();
Usuario usuario = this.uService.filtrarPorId(this.usuarioEstufa.getUsuario().getId());
this.usuarioEstufa.setUsuario(usuario);
this.service.inserir(this.usuarioEstufa);
}
public void alterar(){
this.removerEstufaVazia();
this.service.alterar(this.usuarioEstufa);
}
public void excluir(){
this.service.excluir(this.usuarioEstufaSelecionado);
}
public void filtrar(){
this.usuarioEstufas = this.service.filtar(this.usuarioEstufa);
}
public UsuarioEstufa getUsuarioEstufa() {
if(this.usuarioEstufa == null){
this.usuarioEstufa = new UsuarioEstufa();
}
return usuarioEstufa;
}
public void setUsuarioEstufa(UsuarioEstufa usuarioEstufa) {
this.usuarioEstufa = usuarioEstufa;
Usuario usuario = null;
usuario = this.uService.filtrarPorId(this.usuarioEstufa.getUsuario().getId());
this.usuarioEstufa.setUsuario(usuario);
}
public List<Usuario> getUsuarios() {
return usuarios;
}
public void setUsuarios(List<Usuario> usuarios) {
this.usuarios = usuarios;
}
public Estufa getEstufaLinhaEditavel() {
return estufaLinhaEditavel;
}
public void setEstufaLinhaEditavel(Estufa estufaLinhaEditavel) {
this.estufaLinhaEditavel = estufaLinhaEditavel;
}
public List<UsuarioEstufa> getUsuarioEstufas() {
if(this.usuarioEstufas == null){
this.usuarioEstufas = new ArrayList<>();
}
return usuarioEstufas;
}
public void setUsuarioEstufas(List<UsuarioEstufa> usuarioEstufas) {
this.usuarioEstufas = usuarioEstufas;
}
public UsuarioEstufa getUsuarioEstufaSelecionado() {
return usuarioEstufaSelecionado;
}
public void setUsuarioEstufaSelecionado(UsuarioEstufa usuarioEstufaSelecionado) {
this.usuarioEstufaSelecionado = usuarioEstufaSelecionado;
}
public Estufa getLinhaEditavel() {
if(this.linhaEditavel == null){
this.linhaEditavel = new Estufa();
}
return linhaEditavel;
}
public void setLinhaEditavel(Estufa linhaEditavel) {
this.linhaEditavel = linhaEditavel;
}
public List<Estufa> getEstufas() {
return estufas;
}
public void setEstufas(List<Estufa> estufas) {
this.estufas = estufas;
}
}
Conveter
package com.fatec.converter;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import com.fatec.cdi.CDIServiceLocator;
import com.fatec.modal.Estufa;
import com.fatec.modal.UsuarioEstufa;
import com.fatec.service.EstufaService;
@FacesConverter(“estufa”)
public class Estufa2Conveter implements Converter {
private EstufaService service;
private UsuarioEstufa usuarioEstufa = new UsuarioEstufa();
public Estufa2Conveter() {
this.service = CDIServiceLocator.getBean(EstufaService.class);
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value != null){
for(Estufa estufa : this.usuarioEstufa.getEstufas()){
if(value.equals(estufa.getNomeFantasia())){
return estufa;
}
}
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if(value != null){
Estufa estufa = (Estufa) value;
return estufa.getNomeFantasia() == null ? null : estufa.getNomeFantasia();
}
return null;
}
}