selectOneMenu selecionado com valor do bean

2 respostas
D

Pessoal, não consigo trazer o valor de um selectOneMenu “selecionado” com o valor do bean
Abaixo segue o xhtml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!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:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">

<h:body>

	<ui:insert name="boxTopo">
		<ui:include src="../../comum/estrutura/topo.xhtml" />
	</ui:insert>

	<div class="boxCorpo">
		
		<div class="corpo">

			<ui:insert name="boxMenu">
				<ui:include src="../../comum/estrutura/menu.xhtml" />
			</ui:insert>

			<div class="boxAbas">
				<h:outputLink styleClass="btAbaPesquisar" title="Pesquisar">Pesquisar</h:outputLink>
				<h:outputLink styleClass="btAbaCadastrar" title="Cadastrar">Cadastrar</h:outputLink>
			</div>

			<div class="topoLista">Cadastro de Unidade</div>

			<div class="boxConteudo">

				<h:form id="Cadastro">
					
					<div class="boxCamposFormulario">
					
						<h:inputHidden value="#{UnidadeCadastroBean.unidade.unidadeID}" />
						
						<p:outputPanel styleClass="boxW300" id="boxCliente">
							<h:outputLabel value="Cliente" for="Cliente" title="Cliente" styleClass="obrigatorio w300 lblDescCampo" /> 
							<h:selectOneMenu id="Cliente" value="#{UnidadeCadastroBean.unidade.cliente}" required="true" converter="ClienteConverter" requiredMessage="#{MensagemBean.mensagemFormulario}" styleClass="w300 select">
								<f:selectItem itemLabel="#{MensagemBean.textoSelecione}"  itemValue="" noSelectionOption="true"/>
								<f:selectItems value="#{ProjetoBean.listaCliente}" var="cliente" itemLabel="#{cliente.nome}" itemValue="#{cliente}" /> 
							</h:selectOneMenu>
						</p:outputPanel>
						
						<div class="separador" > </div>
			
						<p:outputPanel styleClass="boxW400" id="boxNome">
							<h:outputLabel value="Nome" title="Nome" for="nome" styleClass="obrigatorio w400 lblDescCampo" />
							<p:inputText id="Nome" label="Nome" value="#{UnidadeCadastroBean.unidade.nome}" maxlength="100" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}" styleClass="w400" />
						</p:outputPanel>
					
						<div class="separador" > </div>
						
						<p:outputPanel styleClass="boxW225" id="boxStatus">
							<h:outputLabel value="Status" for="Status" title="Status" styleClass="obrigatorio w225 lblDescCampo" />
							<h:selectOneMenu id="Status" value="#{UnidadeCadastroBean.unidade.status}" title="Status" styleClass="select w225" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}">
								<f:selectItem itemLabel="#{MensagemBean.textoSelecione}" itemValue="" />
								<f:selectItems value="#{ProjetoBean.status}"/> 
							</h:selectOneMenu>
						</p:outputPanel>
						
						<p:outputPanel styleClass="boxTextAreaGrande" id="boxObs">
							<h:outputLabel value="Obs" for="Obs" title="Obs" styleClass="lblDescCampo" />
							<p:inputTextarea id="Obs" effectDuration="400" value="#{UnidadeCadastroBean.unidade.obs}" styleClass="textAreaGrande"/>
						</p:outputPanel>
						
					</div>
					
					<p:commandButton id="btCadastrar" action="#{UnidadeCadastroBean.Salvar}" value="Cadastrar" styleClass="btCadastrar" update="boxMensagemValidacao" ajax="false"/>
					
				</h:form>
				
				<p:messages id="boxMensagemValidacao" />
				
			</div>
			
		</div>
	</div>
	
</h:body>
</html>

Eu debuguei o bean e o valor está correto, já sobreescrevi os hashCode e o equals mas também não funcionou, tambem debuguei o converter e está correto

Abaixo segue o bean

@ManagedBean(name="UnidadeCadastroBean")
@RequestScoped
public class UnidadeCadastroBean {

	private Unidade unidade		=		new Unidade();

	public String Salvar(){
		
		UnidadeRN unidadeRN		=	new UnidadeRN();
		Integer unidadeId		=	this.unidade.getUnidadeID();
		
		try {
			
			unidadeRN.Salvar(this.unidade);
			
			FacesContext context 		= 	FacesContext.getCurrentInstance();
			
			if(unidadeId == null){
				FacesMessage msg 	 	=	new FacesMessage(GlossarioTexto.getInstance().getSucesso(),GlossarioMensagens.getInstance().getMSG01());
				context.addMessage("gwlMansagem", msg);
			}else{
				FacesMessage msg 	 	=	new FacesMessage(GlossarioTexto.getInstance().getSucesso(),GlossarioMensagens.getInstance().getMSG02());
				context.addMessage("gwlMansagem", msg);
			}
			
		} catch (RNException rn) {
			FacesContext context 	= 	FacesContext.getCurrentInstance();
			FacesMessage msg 	 	=	new FacesMessage(rn.getMessage());
			context.addMessage(null, msg);
			return "/gerenciador/content/unidade/unidadeCadastro";
		}
		
		return "/gerenciador/content/unidade/index";
	}

	public String AlteraStatus() {
		
		if(this.unidade.getStatus()){
			this.unidade.setStatus(false);
		}else{
			this.unidade.setStatus(true);
		}
		
		UnidadeRN 	unidadeRN	 	=	new UnidadeRN();
		
		try {
			unidadeRN.Salvar(this.unidade);
		} catch (RNException rn) {
			FacesContext context 	= 	FacesContext.getCurrentInstance();
			FacesMessage msg 	 	=	new FacesMessage(FacesMessage.SEVERITY_WARN,rn.getMessage(),null);
			context.addMessage(null, msg);
			return "/gerenciador/content/unidade/unidadeListagem";
		}
		
		return null;
	}

	public String Editar(){
		return "/gerenciador/content/unidade/unidadeCadastro";
	}
	
	public Unidade getUnidade() {
		return unidade;
	}

	public void setUnidade(Unidade unidade) {
		this.unidade = unidade;
	}
	

}

Att

2 Respostas

D

Alguem, por favor ???

D

Pessoal para fazer o teste se o cliente que selecionei para editar esta correto, coloquei na tela o seguinte componente

<h:outputLabel value="#{UnidadeCadastroBean.unidade.cliente.clienteID}"/>

e imprimiu certinho.

O que poderia ser, o conversor, mas não vejo erro nenhum nele, pois debuguei e está certo?
Poderia ser os scoped dos bean ???

Criado 27 de novembro de 2011
Ultima resposta 28 de nov. de 2011
Respostas 2
Participantes 1