debugando, ele não entra no método “setatrue” como falou o rafael.
alguem saberia me dizer o porquê ?
debugando, ele não entra no método “setatrue” como falou o rafael.
alguem saberia me dizer o porquê ?
Repara que tu mandou renderizar um “painel_orgao_pai” e ele não existe!
No reRender tem que estar “painel_orgao_externo”.
aqui na minha maquina esse teu codigo ta funcionando…
debugou? tá entrando no setaTrue?
[quote=L.Bach]Repara que tu mandou renderizar um “painel_orgao_pai” e ele não existe!
No reRender tem que estar “painel_orgao_externo”.[/quote]
o painel orgao pai, está acima do orgao externo, por isso me indicaram reRender quem já foi renderizado na pagina, isso significa que, qndo eu entro nesta página, ele já traz o primeiro painel renderizado, o painel orgao pai. e o orgao externo, fica dentro do orgao pai. Veja:
<h:panelGroup id="painel_orgao_pai">
.................. .. .. .
<h:panelGroup id="painel_orgao_externo" >
</h:panelGroup>
</h:panelGroup>
[quote=raf4ever]aqui na minha maquina esse teu codigo ta funcionando…
debugou? tá entrando no setaTrue?[/quote]
eu debbuguei aqui, e realmente ele não entra no setaTrue.
[quote=L.Bach]Repara que tu mandou renderizar um “painel_orgao_pai” e ele não existe!
No reRender tem que estar “painel_orgao_externo”.[/quote]
Como assim não existe?
<h:panelGroup id="painel_orgao_pai">
[quote=EuclidesFilizola][quote=raf4ever]aqui na minha maquina esse teu codigo ta funcionando…
debugou? tá entrando no setaTrue?[/quote]
eu debbuguei aqui, e realmente ele não entra no setaTrue.[/quote]
esse código ta dentro de um h:form?
Está sim.
<ui:composition template="/pages/layout.xhtml">
<ui:define name="conteudo">
<f:loadBundle basename="patrimonio.util.lb" var="lb" />
<h:form id="movimentacao_patrimonio">
coloca aqui o código completo dessa página.
Com F:ajax
<h:form prependId="false" id="form1">
<h:panelGroup id="painel_orgao_pai">
<h:outputLabel value="Externo"/>
<h:selectBooleanCheckbox id="id_externo" value="#{movimentacaoMBean.externo}" >
<f:ajax event="change" execute="@form" render="form1"/>
</h:selectBooleanCheckbox>
<br/>
<h:panelGroup id="painel_orgao_externo" >
<h:outputText value="Orgao externo" rendered="#{movimentacaoMBean.externo}"/>
</h:panelGroup>
</h:panelGroup>
</h:form>
Fique atento aos seguintes pontos.
Tu não precisa de um listener setaTrue, a propria seleção do checkbox ira alternar o valor de externo tendo em vista que eles estao ligados.
Por causa disso é aconselhavel que tu reRenderize o checkbox também para evitar que eles fiquem fora de sincronia
Um evento onchange acho que iria manipular melhor esta ação do que um evento onclick.
E não esqueca de verificar como está o escopo do Mb
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:t="http://myfaces.apache.org/tomahawk">
<ui:composition template="/pages/layout.xhtml">
<ui:define name="conteudo">
<f:loadBundle basename="patrimonio.util.lb" var="lb" />
<h:form id="movimentacao_patrimonio">
<strong> <h:outputText value="Movimentar Patrimonio"/> </strong>
<hr />
<h:panelGrid columns="2">
<h:outputText value="Patrimonio"/>
<h:inputText value="#{movimentacaoMBean.patrimonio.notaFiscalBens.codBem.dsMaterial}" readonly="true"/>
<h:outputText value="Plaqueta"/>
<h:inputText value="#{movimentacaoMBean.patrimonio.plaqueta.cdPlaqueta}" readonly="true"/>
<h:outputText value="Setor Atual"/>
<h:inputText value="#{movimentacaoMBean.setorAtual}" readonly="true"/>
<h:outputText value="Setor para movimentacao"/>
<h:selectOneMenu value="#{movimentacaoMBean.setor.cdSetor}" id="codSetor">
<f:selectItem itemLabel="" />
<f:selectItems value="#{movimentacaoMBean.listaDeTdsSetores}" />
</h:selectOneMenu>
<h:panelGroup id="painel_orgao_pai">
<h:outputLabel value="Externo"/>
<h:selectBooleanCheckbox id="id_externo" value="#{movimentacaoMBean.externo}" >
[b]<a4j:support reRender="painel_orgao_pai" event="onclick"
ajaxSingle="true" actionListener="#{movimentacaoMBean.setaTrue}" />[/b]
</h:selectBooleanCheckbox>
<br />
[b] <h:panelGroup id="painel_orgao_externo" >
<h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{movimentacaoMBean.externo}"/>
<h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" rendered="#{movimentacaoMBean.externo}" >
<f:selectItem itemLabel="" />
<f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" />
</h:selectOneMenu>
</h:panelGroup>[/b]
</h:panelGroup>
<t:saveState value="#{movimentacaoMBean.patrimonio}"/>
<h:commandButton action="#{movimentacaoMBean.movimentarPatrimonio}" value="Movimentar"/>
</h:panelGrid>
<hr/>
</h:form>
<h:form id="tabela_movimentacao_patrimonio">
<f:facet name="titulo">
<h:panelGroup>
<h:outputText value="Movimentacoes Cadastradas"></h:outputText>
</h:panelGroup>
</f:facet>
<rich:dataTable id="tabelaMovimentacaoPatrimonio" style="cursor:pointer;" value="#{movimentacaoMBean.listaMovimentacoesPorPatrimonio}" var="listMovimentacao" onRowMouseOver="this.style.backgroundColor='#C9FDC1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" cellpadding="0" cellspacing="0" rows="10" >
<f:facet name="header" >
<rich:columnGroup>
<h:column > <h:outputText value="Setor" /> </h:column>
<h:column > <h:outputText value="Bem" /> </h:column>
<h:column > <h:outputText value="Data de entrada" /> </h:column>
<h:column > <h:outputText value="Data de saida" /> </h:column>
</rich:columnGroup>
</f:facet>
<h:column > <h:outputText value="#{listMovimentacao.setor.siglaSetor}"/> </h:column>
<h:column > <h:outputText value="#{listMovimentacao.patrimonio.notaFiscalBens.codBem.dsMaterial}"/> </h:column>
<h:column > <h:outputText value="#{listMovimentacao.dataEntrada}"/> </h:column>
<h:column > <h:outputText value="#{listMovimentacao.dataSaida}"/> </h:column>
</rich:dataTable>
</h:form>
</ui:define>
</ui:composition>
</html>
Bem,vamos diminuir as possibilidades de erro.
Deixa nessa página apenas o código que interessa por enquanto.
eu deixei dessa forma, e tbm n funcionou.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:t="http://myfaces.apache.org/tomahawk">
<ui:composition template="/pages/layout.xhtml">
<ui:define name="conteudo">
<f:loadBundle basename="br.gov.ce.srh.patrimonio.util.lb" var="lb" />
<h:form id="movimentacao_patrimonio">
<h:panelGroup id="painel_orgao_pai">
<h:outputLabel value="Externo"/>
<h:selectBooleanCheckbox id="id_externo" value="#{movimentacaoMBean.externo}" >
<a4j:support reRender="painel_orgao_pai" event="onclick"
ajaxSingle="true" actionListener="#{movimentacaoMBean.setaTrue}" />
</h:selectBooleanCheckbox>
<br />
<h:panelGroup id="painel_orgao_externo" >
<h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{movimentacaoMBean.externo}"/>
<h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" rendered="#{movimentacaoMBean.externo}" >
<f:selectItem itemLabel="" />
<f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" />
</h:selectOneMenu>
</h:panelGroup>
</h:panelGroup>
</h:form>
</ui:define>
</ui:composition>
</html>
Tire o setaTrue e mude o evento para onchange.
nada acontece.
:shock:
Modifica para <f:ajax> como eu postei anteriormente apenas para teste.
Aqui funciona perfeitamente.
ps: mude o formulario para <h:form id=“movimentacao_patrimonio” prependId=“false”>
tentei desta forma:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:t="http://myfaces.apache.org/tomahawk">
<ui:composition template="/pages/layout.xhtml">
<ui:define name="conteudo">
<f:loadBundle basename="br.gov.ce.srh.patrimonio.util.lb" var="lb" />
<h:form id="movimentacao_patrimonio" prependId="false">
<h:panelGroup id="painel_orgao_pai">
<h:outputLabel value="Externo"/>
<h:selectBooleanCheckbox id="id_externo" value="#{movimentacaoMBean.externo}" >
<f:ajax event="change" execute="@movimentacao_patrimonio" render="painel_orgao_pai"/>
</h:selectBooleanCheckbox>
<br />
<h:panelGroup id="painel_orgao_externo" >
<h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{movimentacaoMBean.externo}"/>
<h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" rendered="#{movimentacaoMBean.externo}" >
<f:selectItem itemLabel="" />
<f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" />
</h:selectOneMenu>
</h:panelGroup>
</h:panelGroup>
</h:form>
</ui:define>
</ui:composition>
</html>
e da o seguinte erro:
GRAVE: Error Rendering View[/pages/MovimentarPatrimonio.xhtml]
com.sun.facelets.tag.TagException: /pages/MovimentarPatrimonio.xhtml @19,90 <f:ajax> Tag Library supports namespace: http://java.sun.com/jsf/core, but no tag was defined for name: ajax
at com.sun.facelets.compiler.CompilationManager.pushTag(CompilationManager.java:193)
at com.sun.facelets.compiler.SAXCompiler$CompilationHandler.startElement(SAXCompiler.java:194)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at com.sun.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:232)
at com.sun.facelets.compiler.Compiler.compile(Compiler.java:104)
at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:192)
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:141)
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:93)
at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:503)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:553)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:510)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:574)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1527)
at java.lang.Thread.run(Unknown Source)
f:ajax não eh só a partir do JSF 2.0?
Bahh é sim, não tinha me tocado para este pequeno detalhe :S