Boa tarde caros amigos, desculpem desenterrar este assunto, mas já fiz vários testes com tópicos q achei no Forum e não funcionou no meu caso,
eu preciso qdo eu clicar no checkBox seja renderizado um compononente novo e o que estava em tela eh omitido, mas não está funcionando do jeito que preciso,
segue abaixo o trecho do sistema:
<h:panelGrid columns="1">
<h:panelGrid id="vAtivo" rendered="#{finalizacao.valor eq 'false'}">
<h:outputLabel value="Veiculo" />
<t:column>
<h:inputText binding="#{ finalizacao.idVeiculo }" id="idVeiculo"
size="6"
onfocus="document.getElementById( 'form:veiculo' ).focus();"
styleClass="transparente">
</h:inputText>
<f:verbatim> </f:verbatim>
<s:tableSuggestAjax id="veiculo"
suggestedItemsMethod="#{ finalizacao.listVeiculo }"
maxlength="50" var="list" size="55" betweenKeyUp="300"
startRequest="2" charset="utf-8"
binding="#{ finalizacao.veiculo }">
<t:column>
<f:facet name="header">
<s:outputText style="font-size:8;" value="Id" />
</f:facet>
<s:outputText for="idVeiculo" style="font-size:8px;"
label="#{list.id}" />
</t:column>
<t:column>
<f:facet name="header">
<s:outputText style="font-size:8;" value="Nome" />
</f:facet>
<s:outputText for="veiculo" style="font-size:8px;"
label="#{list.nome}" />
</t:column>
</s:tableSuggestAjax>
</t:column>
</h:panelGrid>
<h:panelGrid id="vInativo" rendered="#{finalizacao.valor == 'true'}">
<h:outputLabel value="Veículo" />
<t:column>
<h:inputText binding="#{ finalizacao.idVeiculoInativo }"
id="idVeiculoInativo" size="6"
onfocus="document.getElementById( 'form:veiculo' ).focus();"
styleClass="transparente">
</h:inputText>
<f:verbatim> </f:verbatim>
<s:tableSuggestAjax id="veiculoInativo"
suggestedItemsMethod="#{ finalizacao.listVeiculoInativos}"
maxlength="50" var="list" size="55" betweenKeyUp="300"
startRequest="2" charset="utf-8"
binding="#{ finalizacao.veiculoInativo }">
<t:column>
<f:facet name="header">
<s:outputText style="font-size:8;" value="Id" />
</f:facet>
<s:outputText for="idVeiculoInativo" style="font-size:8px;"
label="#{list.id}" />
</t:column>
<t:column>
<f:facet name="header">
<s:outputText style="font-size:8;" value="Nome" />
</f:facet>
<s:outputText for="veiculoInativo" style="font-size:8px;"
label="#{list.nome}" />
</t:column>
</s:tableSuggestAjax>
</t:column>
</h:panelGrid>
<h:panelGrid columns="3">
<t:selectBooleanCheckbox id="cbCarregaInativos"
value="#{finalizacao.valor}">
<a4j:support reRender="vInativo"
action="#{finalizacao.mudaValor}" event="onclick" immediate="true" ajaxSingle="true"/>
</t:selectBooleanCheckbox>
<h:outputLabel value="Carregar Inativos" />
<h:commandButton value="Cadastrar" disabled="#{finalizacao.valor == 'false'}"
action="#{finalizacao.goCadastro}" />
</h:panelGrid>
<h:panelGrid columns="2">
<t:selectBooleanCheckbox id="respSolAt" value="#{finalizacao.solicitacao}" rendered="#{finalizacao.valor == 'true'}">
<a4j:support action="#{finalizacao.perguntar}" event="onclick" immediate="true"/>
</t:selectBooleanCheckbox>
<h:outputLabel value="Enviar Rota e Solicitar Ativação?" rendered="#{finalizacao.valor == 'true'}"/>
</h:panelGrid>
no meu Bean está assim:
private Boolean valor;
public Boolean getValor() {
return valor;
}
public void setValor(Boolean valor) {
this.valor = valor;
}
public String mudaValor() {
String retorno = "";
if (valor != null) {
if (valor == true) {
valor = false;
} else {
valor = true;
}
} else {
retorno = "finalizacao";
}
return retorno;
}
Este método mudaValor derepente nem precisava ser feito, mas eu fiz para poder ver o q estava acontecendo com a variável valor.
Isso funciona quando o escopo do Bean está como session, mas no meu caso, eu tenho mais algumas telas para finalizar a solicitação e quando eu faço uma nova, está carregando todos os campos… Eu preciso usar o escopo request.
Só que como request, o check eh selecionado e a página recarrega e ele eh desmarcado e não mostra o outro panelGrid.
Outro Detalhe que debugando eu vi, que a variável valor a tela finalizacao é executada sempre vem com valor false.
Não sei mais o que fazer, alguém pude ajudar aí.
Desde já agradeço.
Att.
Diego Silva