Bom dia Guj´s
Existe alguma forma de fazer com que um<h:panelGrid> seja exibido/escondido
conforme clicamos no <p:selectBooleanCheckbox> sem fazer submit da página e
sem usar o <%@taglib uri=“http://richfaces.org/a4j” prefix=“a4j”%> ?
todos ex que vi, fazem uso do :
<a4j:support event=“onclick” ajaxSingle=“true” reRender=“meuForm” />
segue meu código:
termo.xhtml
<p:selectBooleanCheckbox id="cbAceitarTermo" value="#{termoHandler.aceitar}" itemLabel="Eu Aceito" label="CONCONDAR COM O TERMO:" />
<h:panelGrid id="pgAceitar" rendered="#{termoHandler.aceitar}" >
...
</h:panelGrid>
@ManagedBean
private Boolean aceitar = false;
private Panel panelGrid;
public void mostraBotaoAvancar() {
panelGrid.setRendered(true);
aceitar = true;
}
Algum Exemplo?
no seu selectBooleanCheckbox faltou voce colocar
update="pgAceitar"
tenta ai mas concerteza ira funcionar ja utilizei isso e funciona beleza
ate mais
então CristianPalmaSola10
estou utilizando <p:selectBooleanCheckbox>
através da taglib xmlns:p="http://primefaces.org/ui"
neste caso não esta definido na interface do componente o update="pgAceitar"
já tinha tentado antes…
tentei com o binding=""
mas tmb não deu…
dentro da tag do componente em questa
<p:ajax event="change" update="pgAceitar"/>
nada… CristianPalmaSola10
não da erro, mas tmb não funfa
será que a lógica do managedBean ta certa…
Eu quando usei isso nunca coloquei isso
so trocava o valor da varivel booleana e na view mandavar fazer o update no componente
aqui tem um exemplo do que ja utilizei o update
<div class="well" style="margin-left: -20px;">
<h:form styleClass="form-horizontal" id="formFiltro">
<fieldset>
<legend>Lista de Municípios</legend>
<br /><br />
<div class="form-inline" style="margin-left: -20px;">
<div class="control-group">
<h:outputLabel styleClass="control-label" value="Filtrar por Estado" />
<div class="controls">
<p:selectOneMenu value="#{municipioController.idEstado}">
<c:selectItems value="#{municipioController.listaEstado}" var="est"
itemLabel="#{est.dsEstado}" itemValue="#{est.idEstado}" />
<p:ajax event="change" listener="#{municipioController.buscarMunicipiosPorId}"
update=":form :formFiltro @this" />
</p:selectOneMenu>
</div>
</div>
</div>
<br />
</fieldset>
</h:form>
<h:form id="form">
<fieldset>
<p:dataTable var="munc" value="#{municipioController.listaMunicipio}"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink}
{PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
<p:column filterBy="#{munc.dsMunicipio}" filterMatchMode="contains">
<c:facet name="header">
Município
</c:facet>
<h:outputLabel value="#{munc.dsMunicipio}" />
</p:column>
<p:column filterBy="#{munc.cdLegal}" filterMatchMode="contains">
<c:facet name="header">
Código Legal
</c:facet>
<h:outputLabel value="#{munc.cdLegal}" />
</p:column>
<p:column>
<p:commandLink value="Editar" oncomplete="panelEditar.show();" process="@this" update=":formCadMunicipio:panelEditar">
<c:setPropertyActionListener value="#{munc}" target="#{municipioController.municipio}" />
</p:commandLink>
</p:column>
<p:column>
<p:commandLink value="Excluir" oncomplete="panelExcluir.show();" process="@this" update=":form">
<c:setPropertyActionListener value="#{munc}" target="#{municipioController.municipio}" />
</p:commandLink>
</p:column>
</p:dataTable>
<a href="http://localhost:8084/projetoEstagio/faces/paginas/cadastros/cadMunicipio.xhtml"
>
Novo Município
</a>
<p:dialog modal="true" header="Excluir" showEffect="fade" hideEffect="explode"
widgetVar="panelExcluir">
<div class="form-inline">
<h:outputLabel value="Quer excluir o município "/>
<p:spacer width="2"/>
<h:outputLabel value="#{municipioController.municipio.dsMunicipio}"/>
<h:outputLabel value=" ?" />
</div>
<div class="form-actions">
<p:commandButton styleClass="btn btn-danger" value="Sim" update=":form :formCadMunicipio"
actionListener="#{municipioController.excluir}" />
<p:commandButton styleClass="btn btn-primary" value="Não"
onclick="panelExcluir.hide();"
style="margin-left: 20px;"/>
</div>
</p:dialog>
</fieldset>
</h:form>
</div>
Voce precisa dar o update no componente pai ao componente que possui o atributo redered condicional, caso esse componente possua muitos filhos, para naõ precisa dar update em todos, englobe o componente que voce quer atualizar em um p:panelGroup ou algo do tipo.
[quote=cleciusjm]Voce precisa dar o update no componente pai ao componente que possui o atributo redered condicional, caso esse componente possua muitos filhos, para naõ precisa dar update em todos, englobe o componente que voce quer atualizar em um p:panelGroup ou algo do tipo.
[/quote]
Olá cleciusjm
se vc observar meu cod no post… eu coloquei o botão que quero ocultar/apresentar
abrigado em um <h:panelGrid>
o problema que estou conseguindo chamar o meu metodo mostraBotaoAvancar();
vlw…
[quote=RobsonFagundes][quote=cleciusjm]Voce precisa dar o update no componente pai ao componente que possui o atributo redered condicional, caso esse componente possua muitos filhos, para naõ precisa dar update em todos, englobe o componente que voce quer atualizar em um p:panelGroup ou algo do tipo.
[/quote]
Olá cleciusjm
se vc observar meu cod no post… eu coloquei o botão que quero ocultar/apresentar
abrigado em um <h:panelGrid>
o problema que estou conseguindo chamar o meu metodo mostraBotaoAvancar();
vlw…[/quote]
Sim, mas pelo que observei o atributo rendered que é condicional pertence ao panel, porém você deve dar update no pai do componente que possui o atributo condicional, e não diretamente nele, logo quando ele não for mostrado você vai ter só o pai dele renderizado de forma vazia na tela, então ao atualizar, atualiza-se o pai, e muda o atributo condicional, que ao re-rendenizar o pai o filho será atualizado também.