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}" >
<h:panelGroup id="dadosTarefa">
<h:panelGrid id="panelTarefa1" columns="10">
<h:outputText id="lblTarPrioridade"
value="#{msg.CAMPO_PRIORIDADE}:" />
<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>
<h:outputText id="lbltarStatus" value="#{msg.CAMPO_STATUS}:" />
<p:selectOneMenu id="selectOneStatus" style="width: 130px;"
value="#{atendimentoBean.tarefa.status.codigo}"
disabled="#{not atendimentoBean.habilitaTarefa}" effect="fade">
<f:selectItem id="selectTarStatus" itemLabel="" itemValue="0" />
<f:selectItems id="selectStatuses"
value="#{atendimentoBean.statuses}" var="tarSta"
itemValue="#{tarSta.codigo}" itemLabel="#{tarSta.descricao}" />
</p:selectOneMenu>
<h:outputText id="lbltarDataHomologado"
value="#{msg.CAMPO_DATACONCLUIDO}:" />
<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" />
<!-- Salva Tarefa -->
<h:commandButton id="confirmatarefa"
image="/resources/image/confirm.png"
title="#{msg.LEGENDA_CONFIRMAR} #{msg.CAMPO_TAREFA}"
disabled="#{not atendimentoBean.habilitaTarefa}"
action="#{atendimentoBean.gravaTarefa}" />
<!-- Cancela Tarefa -->
<h:commandButton id="cancelartarefa"
image="/resources/image/cancelarRegistro.png"
disabled="#{not atendimentoBean.habilitaTarefa}"
action="#{atendimentoBean.cancelObjectTar}"
title="#{msg.LEGENDA_CANCELAR} #{msg.CAMPO_TAREFA}" />
</h:panelGrid>
<!-- Descrição Tarefa -->
<h:panelGrid id="panelTarefaC3" columns="8">
<h:outputText id="lbltarDescricao" value="#{msg.CAMPO_DESCRICAO}:" />
<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" />
</h:panelGrid>
</h:panelGroup>
</p:dialog>[/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…