Selectone x Dialog JSF JAVA conflito, perdendo referencia ao alterar

Galera, tenho um Selectone em um Dialog, uso esse Dialog para incluir, consultar e alterar.

consigo incluir, mas não consigo alterar nem consultar, pois não atualiza o selectone, outros campos como p:calendar, p:inputTextarea estão trazendo os dados, deve ser algum conflito em relação ao Selectone, pois ao debugar, percebi que o valor do atributo está correto até certo momento, no último set get que o sistema faz ele zera o valor desse atributo que deveria aparecer no selectone, alguém sabe o porquê desse problema?

Grato.

Thiago.

Só pra agilizar, vou postar meu código:

Aqui é onde chamo para alterar

<p:commandButton id="btnAlteraTarefa" icon="alterartable" styleClass="botaoTable" title="#{msg.LEGENDA_ALTERAR} #{msg.CAMPO_TAREFA}" action="#{atendimentoBean.alteraTarefa(tar)}" oncomplete="rcAtualizaDadosTarefa()" disabled="#{not atendimentoBean.habilitado}" style="background-color: transparent;border:0px;"/>

Através de um remotecomand chamo o Dialog

<p:remoteCommand id="commandAtualizaDadosTarefa" oncomplete="panelNovaTarefa.show();" name="rcAtualizaDadosTarefa" update="dadosTarefa" />

Dialog

[code]<p:dialog id=“panelNovaTarefa” widgetVar=“panelNovaTarefa"
width=“720” modal=“true” header=”#{msg.LEGENDA_MANUTENCAOTAREFA}" >

			&lt;h:panelGroup id="dadosTarefa"&gt;
				&lt;h:panelGrid id="panelTarefa1" columns="10"&gt;


					&lt;h:outputText id="lblTarPrioridade"
						value="#{msg.CAMPO_PRIORIDADE}:" /&gt;

					&lt;p:selectOneMenu id=&quot;selectOneTarOrdem&quot; style=&quot;width: 130px;&quot;
						value=&quot;#{atendimentoBean.codigoOrdemTarefa}&quot; 
							disabled=&quot;#{not atendimentoBean.habilitaTarefa}&quot; effect=&quot;fade&quot; &gt;
						&lt;f:selectItem itemLabel="Selecione" itemValue="0" /&gt;
						&lt;f:selectItem itemLabel="1" itemValue="1" /&gt;
						&lt;f:selectItem itemLabel="2" itemValue="2" /&gt;
						&lt;f:selectItem itemLabel="3" itemValue="3" /&gt;
						&lt;f:selectItem itemLabel="4" itemValue="4" /&gt;
						&lt;f:selectItem itemLabel="5" itemValue="5" /&gt;
						&lt;f:selectItem itemLabel="6" itemValue="6" /&gt;
						&lt;f:selectItem itemLabel="7" itemValue="7" /&gt;
						&lt;f:selectItem itemLabel="8" itemValue="8" /&gt;
						&lt;f:selectItem itemLabel="9" itemValue="9" /&gt;
						&lt;f:selectItem itemLabel="10" itemValue="10" /&gt;
					&lt;/p:selectOneMenu&gt;

					&lt;h:outputText id="lbltarStatus" value="#{msg.CAMPO_STATUS}:" /&gt;

					&lt;p:selectOneMenu id=&quot;selectOneStatus&quot; style=&quot;width: 130px;&quot;
						value=&quot;#{atendimentoBean.tarefa.status.codigo}&quot;
						disabled=&quot;#{not atendimentoBean.habilitaTarefa}&quot; effect=&quot;fade&quot;&gt;
						&lt;f:selectItem id="selectTarStatus" itemLabel="" itemValue="0" /&gt;
						&lt;f:selectItems id="selectStatuses"
							value="#{atendimentoBean.statuses}" var="tarSta"
							itemValue="#{tarSta.codigo}" itemLabel="#{tarSta.descricao}" /&gt;

					&lt;/p:selectOneMenu&gt;

					&lt;h:outputText id="lbltarDataHomologado"
						value="#{msg.CAMPO_DATACONCLUIDO}:" /&gt;

					&lt;p:calendar id="tarDataHomologado" mask="99/99/9999"
						value="#{atendimentoBean.dataConcluido}" pattern="dd/MM/yyyy"
						locale="pt" mode="popup" navigator="true" showButtonPanel="true"
						disabled="#{not atendimentoBean.habilitaTarefa}"
						onblur="validaDat(this,this.value,'#{msg.MSG_CAMPODATAINVALIDO}')"
						showOn="button" size="13" /&gt;

					&lt;!-- Salva Tarefa --&gt;
					&lt;h:commandButton id="confirmatarefa"
						image="/resources/image/confirm.png"
						title="#{msg.LEGENDA_CONFIRMAR} #{msg.CAMPO_TAREFA}"
						disabled="#{not atendimentoBean.habilitaTarefa}"
						action="#{atendimentoBean.gravaTarefa}" /&gt;


					&lt;!-- Cancela Tarefa --&gt;
					&lt;h:commandButton id="cancelartarefa"
						image="/resources/image/cancelarRegistro.png"
						disabled="#{not atendimentoBean.habilitaTarefa}"
						action="#{atendimentoBean.cancelObjectTar}"
						title="#{msg.LEGENDA_CANCELAR} #{msg.CAMPO_TAREFA}" /&gt;


				&lt;/h:panelGrid&gt;

				&lt;!-- Descrição Tarefa --&gt;

				&lt;h:panelGrid id="panelTarefaC3" columns="8"&gt;

					&lt;h:outputText id="lbltarDescricao" value="#{msg.CAMPO_DESCRICAO}:" /&gt;
					&lt;p:inputTextarea rows="10" cols="115" autoResize="false"
						value="#{atendimentoBean.tarefa.descricao}"
						id="edtTarefaDescricao"
						disabled="#{not atendimentoBean.habilitaTarefa}"
						onkeypress='return verificar_caracter(event)' autocomplete="off" /&gt;

				&lt;/h:panelGrid&gt;
			&lt;/h:panelGroup&gt;
		&lt;/p:dialog&gt;[/code]

Algum colega ai poderia me ajudar como alterar os dados do selectonemenu em um dialog? como por exemplo:

<p:selectOneMenu id="selectOneTarOrdem" style="width: 130px;" value="#{atendimentoBean.codigoOrdemTarefa}" disabled="#{not atendimentoBean.habilitaTarefa}" effect="fade" > <f:selectItem itemLabel="Selecione" itemValue="0" /> <f:selectItem itemLabel="1" itemValue="1" /> <f:selectItem itemLabel="2" itemValue="2" /> <f:selectItem itemLabel="3" itemValue="3" /> <f:selectItem itemLabel="4" itemValue="4" /> <f:selectItem itemLabel="5" itemValue="5" /> <f:selectItem itemLabel="6" itemValue="6" /> <f:selectItem itemLabel="7" itemValue="7" /> <f:selectItem itemLabel="8" itemValue="8" /> <f:selectItem itemLabel="9" itemValue="9" /> <f:selectItem itemLabel="10" itemValue="10" /> </p:selectOneMenu>

Olá amigo,

Em primeiro lugar, depois posta o seu bean tambem aqui para ficar mais claro. Mas em princípio, eu acredito que você quer trazer uma List para dentro do selectOneMenu e quando o usuario selecionar um item , esse “um” irá setar seu atributo no Bean. Não é isso ?

Bem vamos lá,

Tenho um exemplo aqui que pode te ajudar:

                  <p:selectOneMenu  value="#{seuBean.atributoRecebedor}"> 
			<f:selectItem itemLabel="Selecione" itemValue="" /> 
			<f:selectItems value="#{seuBean.Lista}" var="lista" itemLabel="#{lista}" itemValue="#{lista}" />
		 </p:selectOneMenu>  

O itemLabel é o que aparece na combo , já o itemValue é o que vai setar o atributoRecebedor setado no campo “value”.

O que eu senti falta no seu dialog foi o formulario "<h:form> em volta do seu código.

Espero ter ajudado,

Um abraço,

Gustavo

meu BEAN onde altero

// Altera tarefa

[code] public void alteraTarefa(Tarefa tar) {

	tarefa = new Tarefa();
	setHabilitaTarefa(true);

	try {
		statuses = new DAO<Status>(Status.class,
				JSFUtil.getPersistenceSession(), null).list();
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	tarefa = tar;
	setCodigoTarefaStatus(this.tarefa.getStatus().getCodigo());
	getModelo().setPorcentual(calcPorcentagem());
	codigoStatusTarefa = tar.getStatus().getCodigo();
	codigoOrdemTarefa = tar.getOrdem();

}[/code]

Seu caso é mas simples que eu pensava:

<p:selectOneMenu id="selectOneTarOrdem" style="width: 130px;" value="#{atendimentoBean.codigoOrdemTarefa}" disabled="#{not atendimentoBean.habilitaTarefa}" effect="fade" > <f:selectItem itemLabel="Selecione" itemValue="0" /> <f:selectItem itemLabel="1" itemValue="1" /> <f:selectItem itemLabel="2" itemValue="2" /> <f:selectItem itemLabel="3" itemValue="3" /> <f:selectItem itemLabel="4" itemValue="4" /> <f:selectItem itemLabel="5" itemValue="5" /> <f:selectItem itemLabel="6" itemValue="6" /> <f:selectItem itemLabel="7" itemValue="7" /> <f:selectItem itemLabel="8" itemValue="8" /> <f:selectItem itemLabel="9" itemValue="9" /> <f:selectItem itemLabel="10" itemValue="10" /> </p:selectOneMenu>

No seu Bean :

...
public class atendimentoBean  implements Serializable{	

private String codigoOrdemTarefa;


public void alteraTarefa(Tarefa tar) {  
  
...

objeto.setCodigoOrdemTarefa(this.codigoOrdemTarefa);
  
 ....    
  
}  

//getters e setters

Só não esquece de colocar o <h:form> em volta do seu componente SelectOneMenu, como no link : http://www.primefaces.org/showcase/ui/selectOneMenu.jsf

Também não esquece que NESSE CASO, o valor do atributo só vai ser setado no bean, quando você clicar no commandButton que tem que estar dentro do form também para submeter os dados.

Um abraço !

Seu caso é mas simples que eu pensava:

<p:selectOneMenu id="selectOneTarOrdem" style="width: 130px;" value="#{atendimentoBean.codigoOrdemTarefa}" disabled="#{not atendimentoBean.habilitaTarefa}" effect="fade" > <f:selectItem itemLabel="Selecione" itemValue="0" /> <f:selectItem itemLabel="1" itemValue="1" /> <f:selectItem itemLabel="2" itemValue="2" /> <f:selectItem itemLabel="3" itemValue="3" /> <f:selectItem itemLabel="4" itemValue="4" /> <f:selectItem itemLabel="5" itemValue="5" /> <f:selectItem itemLabel="6" itemValue="6" /> <f:selectItem itemLabel="7" itemValue="7" /> <f:selectItem itemLabel="8" itemValue="8" /> <f:selectItem itemLabel="9" itemValue="9" /> <f:selectItem itemLabel="10" itemValue="10" /> </p:selectOneMenu>

No seu Bean :

...
public class atendimentoBean  implements Serializable{	

private String codigoOrdemTarefa;


public void alteraTarefa(Tarefa tar) {  
  
...

objeto.setCodigoOrdemTarefa(this.codigoOrdemTarefa);
  
 ....    
  
}  

//getters e setters

Só não esquece de colocar o <h:form> em volta do seu componente SelectOneMenu, como no link : http://www.primefaces.org/showcase/ui/selectOneMenu.jsf

Também não esquece que NESSE CASO, o valor do atributo só vai ser setado no bean, quando você clicar no commandButton que tem que estar dentro do form também para submeter os dados.

Um abraço !

Seu caso é mas simples que eu pensava:

<p:selectOneMenu id="selectOneTarOrdem" style="width: 130px;" value="#{atendimentoBean.codigoOrdemTarefa}" disabled="#{not atendimentoBean.habilitaTarefa}" effect="fade" > <f:selectItem itemLabel="Selecione" itemValue="0" /> <f:selectItem itemLabel="1" itemValue="1" /> <f:selectItem itemLabel="2" itemValue="2" /> <f:selectItem itemLabel="3" itemValue="3" /> <f:selectItem itemLabel="4" itemValue="4" /> <f:selectItem itemLabel="5" itemValue="5" /> <f:selectItem itemLabel="6" itemValue="6" /> <f:selectItem itemLabel="7" itemValue="7" /> <f:selectItem itemLabel="8" itemValue="8" /> <f:selectItem itemLabel="9" itemValue="9" /> <f:selectItem itemLabel="10" itemValue="10" /> </p:selectOneMenu>

No seu Bean :

...
public class atendimentoBean  implements Serializable{	

private String codigoOrdemTarefa;


public void alteraTarefa(Tarefa tar) {  
  
...

objeto.setCodigoOrdemTarefa(this.codigoOrdemTarefa);
  
 ....    
  
}  

//getters e setters

Só não esquece de colocar o <h:form> em volta do seu componente SelectOneMenu, como no link : http://www.primefaces.org/showcase/ui/selectOneMenu.jsf

Também não esquece que NESSE CASO, o valor do atributo só vai ser setado no bean, quando você clicar no commandButton que tem que estar dentro do form também para submeter os dados.

Um abraço !

No caso meu form fica na Template Gustavo, não deu certo…