Problemas SelectOneMenu não seta o valor dentro do Dialog

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;
}

}

Blz galera, pessoal to precisando muita de ajuda para resolver esse problema, gostaria muito que alguém pudesse me ajudar

Bom dia amigo.

Tente alterar seu escopo no ManagedBean.

@ViewScoped
public class UsuarioEstufaBean implements Serializable {

Para

@SessionScoped
public class UsuarioEstufaBean implements Serializable {

Também verifique (debugando) se está iniciando corretamente a variável que você está setando o que foi selecionado (usuarioEstufa.usuario)

Obrigado edumatias pela ajuda, mas quando eu utilizo o SessionScoped e navego entre telas, alguns campos vem nulo, gostaria de saber porque isso acontece com SessionScoped sendo que ele é o maior scopo?

Opa.

O escopo com maior duração é o @ApplicationScoped que dura o tempo que a aplicação estiver rodando e pode ser compartilhado entre todos os usuários.

Os dados podem estar se perdendo por alguma outra situação.

Você deve conferir se o método PostConstruct não está sendo chamado durante as transições de tela, e acabar limpando os campos.

Também, o ManagedBean que você cita estar perdendo sessão pode estar sendo instanciado dentro de outro ManagedBean ou até mesmo Converters e Classes auxiliares.

Por fim, pode ser que em alguma tela dessa transição esteja utilizando um evento que possa estar limpando as instâncias atuais.

Desta forma

<f:metadata>
	<f:event type="preRenderView" listener="#{meuMB.metodo}"/>
</f:metadata>