Boa tarde a todos! Estou com problemas ao utilizar um checkbox onde quando estiver false não renderizar mais quando ele estiver marcado,
um ajax no change atualiza o componente
Minha view
[code]
<h:outputLabel rendered="#{!reservaHorarioController.hiddenRepetir}" value="Atualizar todos horarios da mesma solicitação:" />
<h:selectBooleanCheckbox rendered="#{!reservaHorarioController.hiddenRepetir}" id="updateAll" value="#{reservaHorarioController.updateAll}" />
<br />
<h:outputLabel rendered="#{reservaHorarioController.hiddenRepetir}" for="repetir" value="Repetir:" />
<p:selectBooleanCheckbox rendered="#{reservaHorarioController.hiddenRepetir}" id="repetir" value="#{reservaHorarioController.repetir}" >
<p:ajax event="change" update="pgPanel" listener="#{reservaHorarioController.showRepetir}"/>
</p:selectBooleanCheckbox>
<p:panelGrid id="pgPanel" rendered="#{reservaHorarioController.hiddenRepetir}">
<h:outputLabel rendered="#{!reservaHorarioController.hiddenRepetir}" value="Quantidade de dias?" />
<p:spinner rendered="#{!reservaHorarioController.hiddenRepetir}" min="#{reservaHorarioController.timeMin}" max="#{reservaHorarioController.timeMax}" id="spinnerBasic" value="#{reservaHorarioController.qtdDias}"/>
</p:panelGrid>[/code]
public Boolean getUpdateAll() {
if (updateAll == null) {
updateAll = Boolean.FALSE;
}
return updateAll;
}
public void setUpdateAll(Boolean updateAll) {
this.updateAll = updateAll;
}
public void showRepetir(){
setHiddenRepetir(repetir);
}
public Boolean getHiddenRepetir() {
if (hiddenRepetir == null) {
hiddenRepetir = Boolean.FALSE;
}
return hiddenRepetir;
}
Em um dado momento o componente pgPanel pode não está renderizado, então o ideal é q você crie um panel (panelGroup é muito bom nesses casos) acima dele, e dê update nele.
Exemplo:
<h:outputLabel rendered="#{!reservaHorarioController.hiddenRepetir}" value="Atualizar todos horarios da mesma solicitação:" />
<h:selectBooleanCheckbox rendered="#{!reservaHorarioController.hiddenRepetir}" id="updateAll" value="#{reservaHorarioController.updateAll}" />
<br />
<h:outputLabel rendered="#{reservaHorarioController.hiddenRepetir}" for="repetir" value="Repetir:" />
<p:selectBooleanCheckbox rendered="#{reservaHorarioController.hiddenRepetir}" id="repetir" value="#{reservaHorarioController.repetir}" >
<p:ajax event="change" update="pgPanel" listener="#{reservaHorarioController.showRepetir}"/>
</p:selectBooleanCheckbox>
<h:panelGroup id="pgPanel" >
<p:panelGrid rendered="#{reservaHorarioController.hiddenRepetir}">
<h:outputLabel rendered="#{!reservaHorarioController.hiddenRepetir}" value="Quantidade de dias?" />
<p:spinner rendered="#{!reservaHorarioController.hiddenRepetir}" min="#{reservaHorarioController.timeMin}" max="#{reservaHorarioController.timeMax}" id="spinnerBasic" value="#{reservaHorarioController.qtdDias}"/>
</p:panelGrid>
<h:panelGroup>
[quote=ayslanms]Em um dado momento o componente pgPanel pode não está renderizado, então o ideal é q você crie um panel (panelGroup é muito bom nesses casos) acima dele, e dê update nele.
Exemplo:
[code]
<h:outputLabel rendered="#{!reservaHorarioController.hiddenRepetir}" value=“Atualizar todos horarios da mesma solicitação:” />
<h:selectBooleanCheckbox rendered="#{!reservaHorarioController.hiddenRepetir}" id=“updateAll” value="#{reservaHorarioController.updateAll}" />
<h:outputLabel rendered="#{reservaHorarioController.hiddenRepetir}" for=“repetir” value=“Repetir:” />
<p:selectBooleanCheckbox rendered="#{reservaHorarioController.hiddenRepetir}" id=“repetir” value="#{reservaHorarioController.repetir}" >
<p:ajax event=“change” update=“pgPanel” listener="#{reservaHorarioController.showRepetir}"/>
</p:selectBooleanCheckbox>
<h:panelGroup id=“pgPanel” >
<p:panelGrid rendered="#{reservaHorarioController.hiddenRepetir}">
<h:outputLabel rendered="#{!reservaHorarioController.hiddenRepetir}" value=“Quantidade de dias?” />
<p:spinner rendered="#{!reservaHorarioController.hiddenRepetir}" min="#{reservaHorarioController.timeMin}" max="#{reservaHorarioController.timeMax}" id=“spinnerBasic” value="#{reservaHorarioController.qtdDias}"/>
</p:panelGrid>
<h:panelGroup>
[/code][/quote]
Fiz conforme o seu conselho mais ainda não deu certo 
Pode ocorrer alguma coisa por isso está dentro de um popup???
Tenta remove o rendered do checkbox.
qual o escopo do seu bean ?? se estiver em request ou mesmo sem tenta usar com o viewScoped
Removi só pela dica, mas não é isso não
cadê teu botão de ação? O botão tem que fazer uso da propriedade “update” sobre o objeto que se deseja sofrer a atualização. Ex: <p:commandButton … update=“idPainel” … />
Caso não queira que isso seja feito via ajax, use o h:commandButton.
[quote=peerless]cadê teu botão de ação? O botão tem que fazer uso da propriedade “update” sobre o objeto que se deseja sofrer a atualização. Ex: <p:commandButton … update=“idPainel” … />
Caso não queira que isso seja feito via ajax, use o h:commandButton. [/quote]
Boa tarde! Acho que não entendeu meu problema, mas vou explica-lo novamente:
Tenho um
<p:selectBooleanCheckbox rendered="#{reservaHorarioController.hiddenRepetir}" id="repetir" value="#{reservaHorarioController.repetir}" >
<p:ajax event="change" update="pgPanel" listener="#{reservaHorarioController.showRepetir}"/>
</p:selectBooleanCheckbox>
Ao checar (E disparado o ajax pelo evento onchange) o mesmo é para renderizar o seguinte componente :
<h:panelGroup id="pgPanel" >
<p:panelGrid rendered="#{reservaHorarioController.hiddenRepetir}">
<h:outputLabel rendered="#{!reservaHorarioController.hiddenRepetir}" value="Quantidade de dias?" />
<p:spinner rendered="#{!reservaHorarioController.hiddenRepetir}" min="#{reservaHorarioController.timeMin}" max="#{reservaHorarioController.timeMax}" id="spinnerBasic" value="#{reservaHorarioController.qtdDias}"/>
</p:panelGrid>
<h:panelGroup>
Só que ele não renderiza, ja usei o debug e o valor está sendo mudado corretamente ao checar ou não, pelo firebug vejo o ajax executando mais não sei porque no form não acontece simplesmente nada.