[RESOLVIDO] <a4j:support reRender=""> Não estão funcionando

87 respostas
EuclidesFilizola

Bom dia pessoal,

andei lendo varios post e na maioria dizia que se vc quer ter um render dinamico, vc precisa renderizar o componente pai daquele componente a ser renderizando. Pensando nessa linha de raciocinio, eu estou tentando renderizar um panelgroup e n consegui. Tentei também com um a4j:outPanel e também não consegui. abaixo o código.

&lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt;
				&lt;a4j:support reRender="painel_orgao_externo" event="onclick" /&gt;
				&lt;/h:selectBooleanCheckbox&gt;
			
			
				&lt;h:panelGroup id="painel_orgao_externo" rendered="#{movimentacaoMBean.externo}"&gt;
				&lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno" /&gt;
				&lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" &gt;
					  &lt;f:selectItem itemLabel="" /&gt;
						&lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt;
					&lt;/h:selectOneMenu&gt;
				&lt;/h:panelGroup&gt;

Eu estou tentando renderizar o componente “painel_orgao_externo”, através de um selectbox. Alguém saberia porque não está funcionando ?

87 Respostas

R

esse rendered="#{movimentacaoMBean.externo}" tá true?

EuclidesFilizola

ele inicia false.

ele seria alterado conforme o evento “onclick” fosse chamado.

R

entendi…

então vc precisa de algo assim:

&lt;a4j:support reRender="painel_orgao_externo" event="onclick" actionListener="setaTrue" /&gt;

e no MB:

public void setaTrue(ActionEvent evt){
externo = true;
}
EuclidesFilizola

Não funfou não mano. =/

gomesrod

Você só pode fazer reRender em um componente que inicialmente está renderizado.
Ele precisa existir no HTML original (mesmo que seja um Panel vazio) para que as chamadas Ajax modifiquem o conteúdo.

A solução é criar um panel group PAI do painel_orgao_externo, sem o atributo rendered.

<h:panelGroup id="id_do_painel_pai"> <h:panelGroup id="painel_orgao_externo" rendered="#{movimentacaoMBean.externo}"> ... </h:panelGroup> </h:panelGroup>
Aí o componente Ajax faz reRender no id_do_painel_pai

Não sei se fui bem claro, qualquer coisa é só perguntar

EuclidesFilizola

fiz dessa forma e também não funcionou:

&lt;h:panelGroup &gt;
				&lt;h:outputLabel value="Externo"/&gt;
				&lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt;
				&lt;a4j:support reRender="painel_orgao_externo" event="onclick" /&gt;
				&lt;/h:selectBooleanCheckbox&gt;
			<br />
			
				&lt;h:panelGroup id="painel_orgao_externo" rendered="#{movimentacaoMBean.externo}"&gt;
				&lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno" /&gt;
				&lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" &gt;
					  &lt;f:selectItem itemLabel="" /&gt;
						&lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt;
					&lt;/h:selectOneMenu&gt;
				&lt;/h:panelGroup&gt;
			&lt;/h:panelGroup&gt;
L.Bach

O panelGroup tem algum bug ou alguma definição do Faces, que desconheço, no "rendered" dele, quanto à a4j.
Até funciona, na primeira renderização. Mas quando manda renderizar novamente, via a4j, ele não responde.

Sugiro o seguinte:
<h:panelGroup >  
                 <h:outputLabel value="Externo"/>  
                 <h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" >  
                 <a4j:support reRender="painel_orgao_externo" event="onclick" />  
                 </h:selectBooleanCheckbox>  
             <br />  
               
                 <h:panelGroup id="painel_orgao_externo">  
                 <h:outputLabel  rendered="#{movimentacaoMBean.externo}" value="Orgao externo" id="lb_orgaoexterno" />  
                 <h:selectOneMenu  rendered="#{movimentacaoMBean.externo}" value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" >  
                       <f:selectItem itemLabel="" />  
                         <f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" />  
                     </h:selectOneMenu>  
                 </h:panelGroup>  
             </h:panelGroup>

Coloca as condições do rendered no outputLabel e no selectOneMenu e continua com com o reRender do a4j:support apontando para o "painel_orgao_externo".

Abraço

Edit: também precisa acrescentar um método no actionListener do a4j:support, que vai setar "externo" para true ou false, de acordo à necessidade.

R

vc precisa de um actionListener no a4j:support
senão,como vc vai setar a variável ‘externo’ para true?

EuclidesFilizola

fiz dessa forma e tbm não funcionou:

&lt;h:panelGroup id="painel_orgao_pai"&gt;
				&lt;h:outputLabel value="Externo"/&gt;
				&lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt;
				&lt;a4j:support reRender="painel_orgao_externo" event="onclick"
				ajaxSingle="true" actionListener="#{movimentacaoMBean.setaTrue}"/&gt;
				&lt;/h:selectBooleanCheckbox&gt;
			    <br />
			
				   &lt;h:panelGroup id="painel_orgao_externo" &gt;
				      &lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{movimentacaoMBean.externo}"/&gt;
				        &lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" rendered="#{movimentacaoMBean.externo}" &gt;
					      &lt;f:selectItem itemLabel="" /&gt;
						  &lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt;
					  &lt;/h:selectOneMenu&gt;
				&lt;/h:panelGroup&gt;
			&lt;/h:panelGroup&gt;

Onde o método setaTrue

public void setaTrue(ActionEvent evt){ 
		 this.externo = true;  
		}
L.Bach

Tem getter e setter para este externo?

Além disso, coloca ele em um t:saveState, assim:

<t:saveState value="#{movimentacaoMBean.externo}"/>

Vamos ver se funciona

EuclidesFilizola

tem sim.

public void setExterno(boolean externo) {
		this.externo = externo;
	}

	public boolean isExterno() {
		return externo;
	}

Vou testar utilizando o saveState do tomahawk.

EuclidesFilizola

coloquei o saveState…

e nada… novamente.

R

acho que resolvi aqui.
coloca reRender=“painel_orgao_pai”

gomesrod

O que eu estava dizendo era isso:

<h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" >  
                    <a4j:support reRender="painel_pai" event="onclick" />  
                   </h:selectBooleanCheckbox>  

                <h:panelGroup id="painel_pai">
                   <h:panelGroup id="painel_orgao_externo" rendered="#{movimentacaoMBean.externo}">  
                    <h:outputLabel value="Orgao externo" id="lb_orgaoexterno" />  
                    <h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" >  
                         <f:selectItem itemLabel="" />  
                           <f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" />  
                       </h:selectOneMenu>  
                   </h:panelGroup>
                </h:panelGroup>
Ygor

Boa tarde EuclidesFilizola;

O que está acontecendo é o seguinte, primeiro a sua pagina é montada sem o componente ‘painel_orgao_externo’ pois está com redered=false. Até ai tudo bem;
Então tu faz a modificação no checkbox e envia a requisição ajax, essa requisição ajax ira tentar dar um reRender no componente “painel_orgao_externo”, mas ele não existe(pq não foi renderizado) e ai é que encontra o problema, então tu tem que dar um reRender em um componente superior a ele, que ja tenha sido renderizado anteriormente.

EuclidesFilizola

fiz desta forma, e continua sem funcionar, ou seja, ao clicar no selectbox, nada acontece.

&lt;h:panelGroup id="painel_orgao_pai"&gt;
				&lt;h:outputLabel value="Externo"/&gt;
				&lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt;
				&lt;a4j:support reRender="painel_orgao_pai" event="onclick"
				ajaxSingle="true" action="#{movimentacaoMBean.setaTrue}"/&gt;
				&lt;/h:selectBooleanCheckbox&gt;
			    <br />
			
				   &lt;h:panelGroup id="painel_orgao_externo" &gt;
				      &lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{movimentacaoMBean.externo}"/&gt;
				        &lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" rendered="#{movimentacaoMBean.externo}" &gt;
					      &lt;f:selectItem itemLabel="" /&gt;
						  &lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt;
					  &lt;/h:selectOneMenu&gt;
				&lt;/h:panelGroup&gt;
			&lt;/h:panelGroup&gt;
R

em vez de:

action="#{movimentacaoMBean.setaTrue}"

deve ser:

actionListener="#{movimentacaoMBean.setaTrue}"
R

retificando,testei aqui e tbm funciona com action.

vc debugou?tá entrando no método setaTrue ?

EuclidesFilizola

mesmo tendo mudado para actionListener, continua sem funcionar.

&lt;h:panelGroup id="painel_orgao_pai"&gt;
				&lt;h:outputLabel value="Externo"/&gt;
				&lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt;
				&lt;a4j:support reRender="painel_orgao_pai" event="onclick"
				ajaxSingle="true" actionListener="#{movimentacaoMBean.setaTrue}" /&gt;
				&lt;/h:selectBooleanCheckbox&gt;
			    <br />
			&lt;t:saveState value="#{movimentacaoMBean.externo}"/&gt;
				   &lt;h:panelGroup id="painel_orgao_externo" &gt;
				      &lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{movimentacaoMBean.externo}"/&gt;
				        &lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" rendered="#{movimentacaoMBean.externo}" &gt;
					      &lt;f:selectItem itemLabel="" /&gt;
						  &lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt;
					  &lt;/h:selectOneMenu&gt;
				&lt;/h:panelGroup&gt;
			&lt;/h:panelGroup&gt;

método do MB:

public void setaTrue(ActionEvent evt){ 
		 this.setExterno(true);  
		}
EuclidesFilizola

debugando, ele não entra no método “setatrue” como falou o rafael.

alguem saberia me dizer o porquê ?

L.Bach

Repara que tu mandou renderizar um “painel_orgao_pai” e ele não existe!
No reRender tem que estar “painel_orgao_externo”.

R

aqui na minha maquina esse teu codigo ta funcionando…

debugou? tá entrando no setaTrue?

EuclidesFilizola

L.Bach:
Repara que tu mandou renderizar um “painel_orgao_pai” e ele não existe!
No reRender tem que estar “painel_orgao_externo”.

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>
EuclidesFilizola

raf4ever:
aqui na minha maquina esse teu codigo ta funcionando…

debugou? tá entrando no setaTrue?

eu debbuguei aqui, e realmente ele não entra no setaTrue.

R

L.Bach:
Repara que tu mandou renderizar um “painel_orgao_pai” e ele não existe!
No reRender tem que estar “painel_orgao_externo”.

Como assim não existe?

<h:panelGroup id="painel_orgao_pai">
R

EuclidesFilizola:
raf4ever:
aqui na minha maquina esse teu codigo ta funcionando…

debugou? tá entrando no setaTrue?

eu debbuguei aqui, e realmente ele não entra no setaTrue.

esse código ta dentro de um h:form?

EuclidesFilizola

Está sim.

&lt;ui:composition template="/pages/layout.xhtml"&gt;
	&lt;ui:define name="conteudo"&gt;
		&lt;f:loadBundle basename="patrimonio.util.lb" var="lb" /&gt;
		&lt;h:form id="movimentacao_patrimonio"&gt;
R

coloca aqui o código completo dessa página.

Ygor

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

EuclidesFilizola
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;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"&gt;

&lt;ui:composition template="/pages/layout.xhtml"&gt;
	&lt;ui:define name="conteudo"&gt;
		&lt;f:loadBundle basename="patrimonio.util.lb" var="lb" /&gt;
		&lt;h:form id="movimentacao_patrimonio"&gt;
		
		&lt;strong&gt; &lt;h:outputText value="Movimentar Patrimonio"/&gt;  &lt;/strong&gt;
		&lt;hr /&gt;
		&lt;h:panelGrid columns="2"&gt;
        		&lt;h:outputText value="Patrimonio"/&gt;
        		&lt;h:inputText value="#{movimentacaoMBean.patrimonio.notaFiscalBens.codBem.dsMaterial}" readonly="true"/&gt;
        		&lt;h:outputText value="Plaqueta"/&gt;
        		&lt;h:inputText value="#{movimentacaoMBean.patrimonio.plaqueta.cdPlaqueta}" readonly="true"/&gt;
        		&lt;h:outputText value="Setor Atual"/&gt;
        		&lt;h:inputText value="#{movimentacaoMBean.setorAtual}" readonly="true"/&gt;
        		&lt;h:outputText value="Setor para movimentacao"/&gt;
        		&lt;h:selectOneMenu value="#{movimentacaoMBean.setor.cdSetor}" id="codSetor"&gt;
					  &lt;f:selectItem itemLabel="" /&gt;
						&lt;f:selectItems value="#{movimentacaoMBean.listaDeTdsSetores}" /&gt;
					&lt;/h:selectOneMenu&gt;
					
				&lt;h:panelGroup id="painel_orgao_pai"&gt;
				&lt;h:outputLabel value="Externo"/&gt;
				&lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt;
				[b]&lt;a4j:support reRender="painel_orgao_pai" event="onclick"
				ajaxSingle="true" actionListener="#{movimentacaoMBean.setaTrue}" /&gt;[/b]
				&lt;/h:selectBooleanCheckbox&gt;
			    <br />
		
				  [b] &lt;h:panelGroup id="painel_orgao_externo" &gt;
				      &lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{movimentacaoMBean.externo}"/&gt;
				        &lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" rendered="#{movimentacaoMBean.externo}" &gt;
					      &lt;f:selectItem itemLabel="" /&gt;
						  &lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt;
					  &lt;/h:selectOneMenu&gt;
				&lt;/h:panelGroup&gt;[/b]
			&lt;/h:panelGroup&gt;
				
				&lt;t:saveState value="#{movimentacaoMBean.patrimonio}"/&gt;
				&lt;h:commandButton action="#{movimentacaoMBean.movimentarPatrimonio}" value="Movimentar"/&gt;
        	&lt;/h:panelGrid&gt;

        		

		&lt;hr/&gt;
		&lt;/h:form&gt;
		
		&lt;h:form id="tabela_movimentacao_patrimonio"&gt;
		
		&lt;f:facet name="titulo"&gt;
            &lt;h:panelGroup&gt;
                &lt;h:outputText value="Movimentacoes Cadastradas"&gt;&lt;/h:outputText&gt;
            &lt;/h:panelGroup&gt;
        &lt;/f:facet&gt;
	&lt;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" &gt;
				&lt;f:facet name="header" &gt;
				 &lt;rich:columnGroup&gt;
				 	&lt;h:column &gt; &lt;h:outputText value="Setor" /&gt; &lt;/h:column&gt;
				 	&lt;h:column &gt; &lt;h:outputText value="Bem" /&gt; &lt;/h:column&gt;
				 	&lt;h:column &gt; &lt;h:outputText value="Data de entrada" /&gt; &lt;/h:column&gt;
				 	&lt;h:column &gt; &lt;h:outputText value="Data de saida" /&gt; &lt;/h:column&gt;
				 	
				 &lt;/rich:columnGroup&gt;
				&lt;/f:facet&gt;
				
				&lt;h:column &gt; &lt;h:outputText value="#{listMovimentacao.setor.siglaSetor}"/&gt; &lt;/h:column&gt;
				&lt;h:column &gt; &lt;h:outputText value="#{listMovimentacao.patrimonio.notaFiscalBens.codBem.dsMaterial}"/&gt; &lt;/h:column&gt;
				&lt;h:column &gt; &lt;h:outputText value="#{listMovimentacao.dataEntrada}"/&gt; &lt;/h:column&gt;
				&lt;h:column &gt; &lt;h:outputText value="#{listMovimentacao.dataSaida}"/&gt; &lt;/h:column&gt;
				
				&lt;/rich:dataTable&gt;
		
		&lt;/h:form&gt;
		
&lt;/ui:define&gt;

	&lt;/ui:composition&gt;

&lt;/html&gt;
R

Bem,vamos diminuir as possibilidades de erro.

Deixa nessa página apenas o código que interessa por enquanto.

EuclidesFilizola

eu deixei dessa forma, e tbm n funcionou.

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;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"&gt;

&lt;ui:composition template="/pages/layout.xhtml"&gt;
	&lt;ui:define name="conteudo"&gt;
		&lt;f:loadBundle basename="br.gov.ce.srh.patrimonio.util.lb" var="lb" /&gt;
		&lt;h:form id="movimentacao_patrimonio"&gt;
		
		
				&lt;h:panelGroup id="painel_orgao_pai"&gt;
				&lt;h:outputLabel value="Externo"/&gt;
				&lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt;
				&lt;a4j:support reRender="painel_orgao_pai" event="onclick"
				ajaxSingle="true" actionListener="#{movimentacaoMBean.setaTrue}" /&gt;
				&lt;/h:selectBooleanCheckbox&gt;
			    <br />
		
				   &lt;h:panelGroup id="painel_orgao_externo" &gt;
				      &lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{movimentacaoMBean.externo}"/&gt;
				        &lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" rendered="#{movimentacaoMBean.externo}" &gt;
					      &lt;f:selectItem itemLabel="" /&gt;
						  &lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt;
					  &lt;/h:selectOneMenu&gt;
				&lt;/h:panelGroup&gt;
			&lt;/h:panelGroup&gt;
				
		
		
		&lt;/h:form&gt;
		
&lt;/ui:define&gt;

	&lt;/ui:composition&gt;

&lt;/html&gt;
Ygor

Tire o setaTrue e mude o evento para onchange.

EuclidesFilizola

nada acontece.

:frowning:

Ygor

: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”>

gomesrod

Na verdade ao trabalhar com Ajax o melhor é usar o a4j:form

EuclidesFilizola

tentei desta forma:

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;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"&gt;

&lt;ui:composition template="/pages/layout.xhtml"&gt;
	&lt;ui:define name="conteudo"&gt;
		&lt;f:loadBundle basename="br.gov.ce.srh.patrimonio.util.lb" var="lb" /&gt;
		&lt;h:form id="movimentacao_patrimonio" prependId="false"&gt;
		
		
				&lt;h:panelGroup id="painel_orgao_pai"&gt;
				&lt;h:outputLabel value="Externo"/&gt;
				&lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt;
				&lt;f:ajax event="change" execute="@movimentacao_patrimonio" render="painel_orgao_pai"/&gt; 
				
				&lt;/h:selectBooleanCheckbox&gt;
			    <br />
		
				   &lt;h:panelGroup id="painel_orgao_externo" &gt;
				      &lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{movimentacaoMBean.externo}"/&gt;
				        &lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" rendered="#{movimentacaoMBean.externo}" &gt;
					      &lt;f:selectItem itemLabel="" /&gt;
						  &lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt;
					  &lt;/h:selectOneMenu&gt;
				&lt;/h:panelGroup&gt;
			&lt;/h:panelGroup&gt;
				
		
		
		&lt;/h:form&gt;
		
&lt;/ui:define&gt;

	&lt;/ui:composition&gt;

&lt;/html&gt;

e da o seguinte erro:

GRAVE: Error Rendering View[/pages/MovimentarPatrimonio.xhtml]
com.sun.facelets.tag.TagException: /pages/MovimentarPatrimonio.xhtml @19,90 &lt;f:ajax&gt; 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)
R

f:ajax não eh só a partir do JSF 2.0?

Ygor

Bahh é sim, não tinha me tocado para este pequeno detalhe :S

EuclidesFilizola

Alguem poderia me dar alguma solução ?

mudar para javascript ? utilizar algum outro componente ? algo relacionado ?

R

Bahh é sim, não tinha me tocado para este pequeno detalhe :S

:smiley:

Mas tá estranho isso…

Exemplo de código que eu fiz q funciona:

&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:t="http://myfaces.apache.org/tomahawk"
      xmlns:rich="http://richfaces.org/rich"&gt;

   &lt;h:form&gt;
     &lt;h:panelGroup id="painel_orgao_pai"&gt;  
                &lt;h:outputLabel value="Externo"/&gt;  
                &lt;h:selectBooleanCheckbox  id="id_externo" value="#{bean.certo}" &gt;  
                &lt;a4j:support reRender="painel_orgao_pai" event="onclick"  
                ajaxSingle="true" /&gt;  
                &lt;/h:selectBooleanCheckbox&gt;  
                <br/>  
             
                   &lt;h:panelGroup id="painel_orgao_externo" &gt;  
                     &lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{bean.certo}"/&gt;  
                   &lt;/h:panelGroup&gt;  
           &lt;/h:panelGroup&gt;  
   
   &lt;/h:form&gt;
&lt;/ui:composition&gt;

Mb:

package teste;
public class Bean {
	boolean certo;
	public boolean isCerto() {
		return certo;
	}

	public void setCerto(boolean certo) {
		this.certo = certo;
	}
	
	

	
}
EuclidesFilizola

Não vejo quase nenhuma diferença do código postado…

&lt;h:form id="movimentacao_patrimonio" prependId="false"&gt;
		
		
				&lt;h:panelGroup id="painel_orgao_pai"&gt;
				&lt;h:outputLabel value="Externo"/&gt;
				&lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt;
				&lt;a4j:support reRender="painel_orgao_pai" event="onclick"
				ajaxSingle="true"  /&gt;
				&lt;/h:selectBooleanCheckbox&gt;
			    <br />
		
				   &lt;h:panelGroup id="painel_orgao_externo" &gt;
				      &lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno" rendered="#{movimentacaoMBean.externo}"/&gt;
				        &lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" rendered="#{movimentacaoMBean.externo}" &gt;
					      &lt;f:selectItem itemLabel="" /&gt;
						  &lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt;
					  &lt;/h:selectOneMenu&gt;
				&lt;/h:panelGroup&gt;
			&lt;/h:panelGroup&gt;
				
		
		
		&lt;/h:form&gt;

R

por acaso,esse teu layout.xhtml tem algum h:form dentro dele?

EuclidesFilizola

Não tem não Rafael.

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;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"&gt;
    &lt;head&gt;  
    	&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/&gt;
    	&lt;link href="/SistemaPatrimonio/css/estilo.css" rel="stylesheet" type="text/css"/&gt;
    	&lt;script type="text/javascript" src="/SistemaPatrimonio/js/funcao_tab.js"&gt;&lt;/script&gt;
    	&lt;script type="text/javascript" src="/SistemaPatrimonio/js/javascript.js"&gt;&lt;/script&gt;
    	
    &lt;/head&gt;

	&lt;body class="twoColElsLtHdr"&gt;
		&lt;div id="container"&gt;
			&lt;div id="header"&gt;
			    &lt;h1&gt;<img />&lt;/h1&gt;
			 &lt;/div&gt;
			  &lt;div id="sidebar1" &gt;
			    &lt;h3&gt;&lt;ui:include src="/pages/menu.xhtml"/&gt;&lt;/h3&gt;
			 &lt;/div&gt;
			 &lt;div id="mainContent"&gt;
			 	&lt;ui:insert name="conteudo"&gt;&lt;/ui:insert&gt;	
			 &lt;/div&gt;	
			 &lt;rich:spacer height="39" /&gt;
			 &lt;div id="footer"&gt;
			 <br /><br />
			 &lt;hr /&gt;<br/>
			

			 &lt;/div&gt;
		&lt;/div&gt;
	&lt;/body&gt;

&lt;/html&gt;
R

deixa eu ver o código do movimentacaoMBean

Ygor

Isso ta muito estranho. O Seu mb está ok? getters e setters…
Por via das duvidas preenche ou deleta essa linha…
<f:selectItem itemLabel="" />

thiago.correa

Olha só eu li na página do myfaces sobre o uso de rendered em componentes atualizados via ajax, vai parecer meio estranho mas testa da seguinte maneira

<h:outputLabel value="Externo"/>  
                 <h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" >  
                 <a4j:support reRender="painel_orgao_pai" event="onclick"  
                 ajaxSingle="true"  />  
                 </h:selectBooleanCheckbox> 

<h:panelGorup id="painel_orgao_pai">
    <h:panelGorup id="painel1" rendered="#{mBean.rendered}">
    </h:panelGroup>
</h:panelGroup>

Testa aí.
A explicação é que o componente que você está tentando exibir, ele inicialmente não existe na árvore HTML pois, não foi renderizado, então essa é a solução apresentada (uma outra seria tirar o atributo rendered do panelGroup e colocar em cada um dos elementos, conviniente quando você tem 2, 3 componentes dentro do panel, mais inviável quando se tem dezenas deles)

EuclidesFilizola

Ygor:
Isso ta muito estranho. O Seu mb está ok? getters e setters…
Por via das duvidas preenche ou deleta essa linha…
<f:selectItem itemLabel="" />

eu fiz das duas formas, tanto preenchendo, como deletando e não funcionou …

thiago.correa:
Olha só eu li na página do myfaces sobre o uso de rendered em componentes atualizados via ajax, vai parecer meio estranho mas testa da seguinte maneira

<h:outputLabel value="Externo"/>  
                 <h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" >  
                 <a4j:support reRender="painel_orgao_pai" event="onclick"  
                 ajaxSingle="true"  />  
                 </h:selectBooleanCheckbox> 

<h:panelGorup id="painel_orgao_pai">
    <h:panelGorup id="painel1" rendered="#{mBean.rendered}">
    </h:panelGroup>
</h:panelGroup>

Testa aí.
A explicação é que o componente que você está tentando exibir, ele inicialmente não existe na árvore HTML pois, não foi renderizado, então essa é a solução apresentada (uma outra seria tirar o atributo rendered do panelGroup e colocar em cada um dos elementos, conviniente quando você tem 2, 3 componentes dentro do panel, mais inviável quando se tem dezenas deles)

fiz +/- oq vc disse, de acordo com o código abaixo:

<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"  />
				</h:selectBooleanCheckbox>
			    <br />
		
				   <h:panelGroup id="painel_orgao_externo"  rendered="#{movimentacaoMBean.externo}">
				      <h:outputLabel value="Orgao externo" id="lb_orgaoexterno"/>
				        <h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" >
					      
						  <f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" />
					  </h:selectOneMenu>
				</h:panelGroup>
		</h:panelGroup>

e também não funcionou !!!

R

posta ai o código do MB

thiago.correa

Tenta o event=“onchange” ao invés de event=“onclick”

EuclidesFilizola
public class MovimentacaoMBean {

	private Patrimonio patrimonio = new Patrimonio();
	private Movimentacao movimentacao = new Movimentacao();
	private UltimaMovimentacao ultimaMovimentacao = new UltimaMovimentacao();
	private Setor setor = new Setor();
	private Setor SetorAtual = new Setor();
	private OrgaoExterno orgaoExterno = new OrgaoExterno();
	private boolean externo;
	private SetorDAO setorDao = new SetorDAO();
	private PatrimonioDAO patrimonioDao = new PatrimonioDAO();
	private MovimentacaoDAO movimentacaoDao = new MovimentacaoDAO();
	private UltimaMovimentacaoDAO ultimaMoviDAO = new UltimaMovimentacaoDAO();
	private OrgaoExternoDAO orgaoDao = new OrgaoExternoDAO();
	private List&lt;Movimentacao&gt; listaMovimentacoesPorPatrimonio = new ArrayList&lt;Movimentacao&gt;();
	private List&lt;SelectItem&gt; listaDeTdsSetores = new ArrayList&lt;SelectItem&gt;();
	private List&lt;SelectItem&gt; listaDeOrgsExternos = new ArrayList&lt;SelectItem&gt;();
	

	
	public MovimentacaoMBean() {
		
	}
	
............
......................
..............................
......................................


	public void setExterno(boolean externo) {
		this.externo = externo;
	}

	public boolean isExterno() {
		return externo;
	}
EuclidesFilizola

thiago.correa:
Tenta o event=“onchange” ao invés de event=“onclick”

já mudei para o onchange, e não funciona !

thiago.correa

Mas ele faz a requisição até o MBean tudo certinho?!

R

qual o escopo desse bean no faces-config?

thiago.correa

cara faz assim, coloca na tua página o seguinte

<a4j:outputPanel ajaxRendered="true">
<h:messages showDetail="true" />
</a4j:outputPanel>
thiago.correa

Consegui,

segue os arquivos

jsp

<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %> 
      <%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
      <%@taglib uri="http://richfaces.org/a4j" prefix="a4j" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
	<f:view>
		<a4j:outputPanel ajaxRendered="true">
			<h:messages showDetail="true"/>
		</a4j:outputPanel>
		
         <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" action="#{movimentacaoMBean.showExterno}" />  
                 </h:selectBooleanCheckbox>  
                 <br />  
           
                    <h:panelGroup id="painel_orgao_externo" rendered="#{movimentacaoMBean.externo}">  
                       <h:outputLabel value="Orgao externo" id="lb_orgaoexterno" />  
                         <h:selectOneMenu value="#{movimentacaoMBean.codOrgao}" id="codOrgao" >  
                           <f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" />  
                       </h:selectOneMenu>  
                 </h:panelGroup>  
             </h:panelGroup>  
                   
           <h:commandButton action="#{movimentacaoMBean.envia}" />
           
         </h:form>  	
	</f:view>
  </body>
</html>

java

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

public class MovimentacaoMBean {

	private boolean externo;
	private List<SelectItem> listaDeOrgsExternos =  new ArrayList<SelectItem>();;
	private int codOrgao;

	public List<SelectItem> getListaDeOrgsExternos() {
		listaDeOrgsExternos.add(new SelectItem("1", "Orgão Externo 1"));
		listaDeOrgsExternos.add(new SelectItem("2", "Orgão Externo 2"));
		listaDeOrgsExternos.add(new SelectItem("3", "Orgão Externo 3"));
		listaDeOrgsExternos.add(new SelectItem("4", "Orgão Externo 4"));
		
		
		return listaDeOrgsExternos;
	}

	public void setListaDeOrgsExternos(List<SelectItem> listaDeOrgsExternos) {
		this.listaDeOrgsExternos = listaDeOrgsExternos;
	}


	public void showExterno() {
		System.out.println("is externo: " + externo);
	}

	public void setExterno(boolean externo) {
		this.externo = externo;
	}

	public boolean isExterno() {
		return externo;
	}

	public int getCodOrgao() {
		return codOrgao;
	}

	public void setCodOrgao(int codOrgao) {
		this.codOrgao = codOrgao;
	}
	
	
	
	public String envia() {
		System.out.println(codOrgao);
		return null;
	}
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">

	<display-name>app</display-name>

	<context-param>

		<param-name>javax.faces.CONFIG_FILES</param-name>

		<param-value>/WEB-INF/faces-config.xml</param-value>

	</context-param>

	<context-param>

		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>

		<param-value>server</param-value>

	</context-param>

	<servlet>

		<servlet-name>Faces Servlet</servlet-name>

		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

		<load-on-startup>1</load-on-startup>

	</servlet>

	<servlet-mapping>

		<servlet-name>Faces Servlet</servlet-name>

		<url-pattern>*.jsf</url-pattern>

	</servlet-mapping>

	<login-config>

		<auth-method>BASIC</auth-method>

	</login-config>

	<filter>

		<display-name>RichFaces Filter</display-name>

		<filter-name>richfaces</filter-name>

		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>richfaces</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
</web-app>

faces-config

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
                              "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
	<managed-bean>
		<managed-bean-name>movimentacaoMBean</managed-bean-name>
		<managed-bean-class>MovimentacaoMBean</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
	</managed-bean>
</faces-config>

Tentei usar o mesmo modelo que você fez, e funcionou perfeito, dá uma comparada e vê o que pode ser que esteja dando errado, qualquer coisa pode perguntar

R

thiago,
qual o propósito desse trecho?

&lt;a4j:outputPanel ajaxRendered="true"&gt;  
            &lt;h:messages showDetail="true"/&gt;  
        &lt;/a4j:outputPanel&gt;

abraços.

R

resolvido então??

thiago.correa

raf4ever:
thiago,
qual o propósito desse trecho?

&lt;a4j:outputPanel ajaxRendered="true"&gt;  
            &lt;h:messages showDetail="true"/&gt;  
        &lt;/a4j:outputPanel&gt;

abraços.

Como está sendo feita uma requisição Ajax, o JSF não tem como atualizar a página indicando um erro, então, coloca-se esse outputPanel pois ele pode ser renderizado via ajax, e mostrar os erros que acontecem ao tentar submeter aquela requisição!

thiago.correa

Eu até faria uma melhoria no meu código, ao invés de popular a lista no método getListaDeOrgsExternos eu colocaria no showExterno, ficaria assim

public  List<SelectItem> getListaDeOrgsExternos() {  
         return listaDeOrgsExternos;  
     }  
   
 
     public void showExterno() {  
         if (listaDeOrgsExternos == null || !listaDeOrgsExternos.isEmpty()) {
                  listaDeOrgsExternos = new ArrayList<SelectItem>();
         }

         listaDeOrgsExternos.add(new SelectItem("1", "Orgão Externo 1"));  
         listaDeOrgsExternos.add(new SelectItem("2", "Orgão Externo 2"));  
         listaDeOrgsExternos.add(new SelectItem("3", "Orgão Externo 3"));  
         listaDeOrgsExternos.add(new SelectItem("4", "Orgão Externo 4"));  

         System.out.println("is externo: " + externo);  
     }

Agora sim :smiley:

R

thiago.correa:
raf4ever:
thiago,
qual o propósito desse trecho?

&lt;a4j:outputPanel ajaxRendered="true"&gt;  
            &lt;h:messages showDetail="true"/&gt;  
        &lt;/a4j:outputPanel&gt;

abraços.

Como está sendo feita uma requisição Ajax, o JSF não tem como atualizar a página indicando um erro, então, coloca-se esse outputPanel pois ele pode ser renderizado via ajax, e mostrar os erros que acontecem ao tentar submeter aquela requisição!

legal…interessante…

EuclidesFilizola

o esco do mb é request.

coloquei o

&lt;a4j:outputPanel ajaxRendered="true"&gt;    
             &lt;h:messages showDetail="true"/&gt;    
         &lt;/a4j:outputPanel&gt;

e não apareceu erro nenhum quando eu clico no selectBox.

thiago.correa

Na página 4 fiz um exemplo que funcionou, dá uma olhada e vê se te atende

O link é:
http://www.guj.com.br/posts/list/45/218579.java#1117224

EuclidesFilizola

eu criei o método “showExterno” conforme o thiago.correa mostrou o código que funcionou com ele.

bem, não funcionou nada, não mostrou erro de ajax, n renderizou …

dae eu fiz um debbug.

e advinhem ?

isso msm…

nada acontece, ele n entra no método “showExterno”

&lt;h:panelGroup id="painel_orgao_pai" &gt;
				&lt;h:outputLabel value="Externo"/&gt;
				&lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt;
				&lt;a4j:support reRender="painel_orgao_pai" event="onclick"
				ajaxSingle="true"  action="#{movimentacaoMBean.showExterno}"/&gt;
				&lt;/h:selectBooleanCheckbox&gt;
			    <br />
		
				   &lt;h:panelGroup id="painel_orgao_externo"  rendered="#{movimentacaoMBean.externo}"&gt;
				      &lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno"/&gt;
				        &lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" &gt;
					      &lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt;
					  &lt;/h:selectOneMenu&gt;
				&lt;/h:panelGroup&gt;
		&lt;/h:panelGroup&gt;

MB

public void showExterno() {  
		         System.out.println("is externo: " + externo);  
		     }

… saberiam me explicar ?

EuclidesFilizola

aqui está meu web.xml para vocês darem uma olhada.

&lt;display-name&gt;SistemaPatrimonio&lt;/display-name&gt;
 &lt;context-param&gt;
  &lt;param-name&gt;org.richfaces.SKIN&lt;/param-name&gt;
  &lt;param-value&gt;emeraldTown&lt;/param-value&gt;
 &lt;/context-param&gt;
 &lt;context-param&gt;
  &lt;param-name&gt;org.richfaces.CONTROL_SKINNING&lt;/param-name&gt;
  &lt;param-value&gt;enable&lt;/param-value&gt;
 &lt;/context-param&gt;
 &lt;context-param&gt;
  &lt;param-name&gt;org.ajax4jsf.VIEW_HANDLERS&lt;/param-name&gt;
  &lt;param-value&gt;com.sun.facelets.FaceletViewHandler&lt;/param-value&gt;
 &lt;/context-param&gt;
 &lt;context-param&gt;
  &lt;param-name&gt;org.ajax4jsf.SKIN&lt;/param-name&gt;
  &lt;param-value&gt;classic&lt;/param-value&gt;
 &lt;/context-param&gt;
 &lt;context-param&gt;
  &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
  &lt;param-value&gt;.xhtml&lt;/param-value&gt;
 &lt;/context-param&gt;
 &lt;context-param&gt;
  &lt;param-name&gt;facelets.REFRESH_PERIOD&lt;/param-name&gt;
  &lt;param-value&gt;2&lt;/param-value&gt;
 &lt;/context-param&gt;
 &lt;context-param&gt;
  &lt;param-name&gt;facelets.DEVELOPMENT&lt;/param-name&gt;
  &lt;param-value&gt;true&lt;/param-value&gt;
 &lt;/context-param&gt;
 &lt;context-param&gt;
  &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
  &lt;param-value&gt;server&lt;/param-value&gt;
 &lt;/context-param&gt;
 &lt;context-param&gt;
  &lt;param-name&gt;com.sun.faces.validateXml&lt;/param-name&gt;
  &lt;param-value&gt;true&lt;/param-value&gt;
 &lt;/context-param&gt;
 &lt;context-param&gt;
  &lt;param-name&gt;com.sun.faces.verifyObjects&lt;/param-name&gt;
  &lt;param-value&gt;true&lt;/param-value&gt;
 &lt;/context-param&gt;
 &lt;!-- CONFIGURAÇÃO TOMAHAWK  --&gt;
 &lt;filter&gt;
  &lt;filter-name&gt;MyFacesExtensionsFilter&lt;/filter-name&gt;
  &lt;filter-class&gt;org.apache.myfaces.webapp.filter.ExtensionsFilter&lt;/filter-class&gt;
  &lt;init-param&gt;
   &lt;param-name&gt;uploadMaxFileSize&lt;/param-name&gt;
   &lt;param-value&gt;20m&lt;/param-value&gt;
  &lt;/init-param&gt;
 &lt;/filter&gt;
 &lt;!-- CONFIGURAÇÃO RICHFACES --&gt;
 &lt;filter&gt;
  &lt;display-name&gt;RichFaces Filter&lt;/display-name&gt;
  &lt;filter-name&gt;richfaces&lt;/filter-name&gt;
  &lt;filter-class&gt;org.ajax4jsf.Filter&lt;/filter-class&gt;
 &lt;/filter&gt;
 &lt;filter&gt;
  &lt;display-name&gt;Ajax4jsf Filter&lt;/display-name&gt;
  &lt;filter-name&gt;ajax4jsf&lt;/filter-name&gt;
  &lt;filter-class&gt;org.ajax4jsf.Filter&lt;/filter-class&gt;
 &lt;/filter&gt;
 &lt;filter&gt;
  &lt;display-name&gt;LoginFilter&lt;/display-name&gt;
  &lt;filter-name&gt;LoginFilter&lt;/filter-name&gt;
  &lt;filter-class&gt;patrimonio.filtros.LoginFilter&lt;/filter-class&gt;
 &lt;/filter&gt;
 &lt;filter-mapping&gt;
  &lt;filter-name&gt;MyFacesExtensionsFilter&lt;/filter-name&gt;
  &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
 &lt;/filter-mapping&gt;
 &lt;filter-mapping&gt;
  &lt;filter-name&gt;MyFacesExtensionsFilter&lt;/filter-name&gt;
  &lt;url-pattern&gt;/faces/myFacesExtensionResource/*&lt;/url-pattern&gt;
 &lt;/filter-mapping&gt;
 &lt;filter-mapping&gt;
  &lt;filter-name&gt;richfaces&lt;/filter-name&gt;
  &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
  &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
  &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
  &lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;
 &lt;/filter-mapping&gt;
 &lt;filter-mapping&gt;
  &lt;filter-name&gt;ajax4jsf&lt;/filter-name&gt;
  &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
  &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
  &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
  &lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;
 &lt;/filter-mapping&gt;
 &lt;filter-mapping&gt;
  &lt;filter-name&gt;LoginFilter&lt;/filter-name&gt;
  &lt;url-pattern&gt;/LoginFilter&lt;/url-pattern&gt;
 &lt;/filter-mapping&gt;
 &lt;servlet&gt;
  &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
  &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
  &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
 &lt;/servlet&gt;
 &lt;servlet&gt;
  &lt;servlet-name&gt;Registro Geral&lt;/servlet-name&gt;
  &lt;servlet-class&gt;patrimonio.relatorio.RegistroGeralBens&lt;/servlet-class&gt;
 &lt;/servlet&gt;
 &lt;servlet-mapping&gt;
  &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
  &lt;url-pattern&gt;*.jsf&lt;/url-pattern&gt;
 &lt;/servlet-mapping&gt;
 &lt;servlet-mapping&gt;
  &lt;servlet-name&gt;Registro Geral&lt;/servlet-name&gt;
  &lt;url-pattern&gt;/report&lt;/url-pattern&gt;
 &lt;/servlet-mapping&gt;
 &lt;login-config&gt;
  &lt;auth-method&gt;BASIC&lt;/auth-method&gt;
 &lt;/login-config&gt;
&lt;/web-app&gt;
thiago.correa

O teu web.xml tá configurado conforme o exemplo que eu postei?!

Só por desencargo de conciência, vou colocar as libs que eu utilizei:

commons-beanutils-1.7.0.jar
commons-collections-3.2.jar
commons-digester-1.8.jar
commons-logging-1.0.3.jar
jsf-api-1.1_02.jar
jsf-impl-1.1_02.jar
jstl-1.0.jar
log4j-1.2.14.jar
richfaces-api-3.1.6.SR1.jar
richfaces-impl-3.1.6.SR1.jar
richfaces-ui-3.1.6.SR1.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar

EuclidesFilizola

thiago.correa:
Na página 4 fiz um exemplo que funcionou, dá uma olhada e vê se te atende

O link é:
http://www.guj.com.br/posts/list/45/218579.java#1117224

eu fiz quase “identico” que vc. Só muda a lista que é diferente, o resto é igual. E continua sem funcionar.

vai codigo abaixo:

<!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" />
		
		 <a4j:outputPanel ajaxRendered="true">    
             <h:messages showDetail="true"/>    
         </a4j:outputPanel> 
         
         
		<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"  action="#{movimentacaoMBean.showExterno}"/>
				</h:selectBooleanCheckbox>
			    <br />
		
				   <h:panelGroup id="painel_orgao_externo"  rendered="#{movimentacaoMBean.externo}">
				      <h:outputLabel value="Orgao externo" id="lb_orgaoexterno"/>
				        <h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" >
					      <f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" />
					  </h:selectOneMenu>
				</h:panelGroup>
		</h:panelGroup>
				
		
		
		</h:form>
		
</ui:define>

	</ui:composition>

</html>

MB

package br.gov.ce.srh.patrimonio.faces;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import br.gov.ce.srh.patrimonio.dao.MovimentacaoDAO;
import br.gov.ce.srh.patrimonio.dao.OrgaoExternoDAO;
import br.gov.ce.srh.patrimonio.dao.PatrimonioDAO;
import br.gov.ce.srh.patrimonio.dao.SetorDAO;
import br.gov.ce.srh.patrimonio.dao.UltimaMovimentacaoDAO;
import br.gov.ce.srh.patrimonio.entidade.Movimentacao;
import br.gov.ce.srh.patrimonio.entidade.OrgaoExterno;
import br.gov.ce.srh.patrimonio.entidade.UltimaMovimentacao;
import br.gov.ce.srh.patrimonio.entidade.Patrimonio;
import br.gov.ce.srh.patrimonio.entidade.Setor;

public class MovimentacaoMBean {

	private Patrimonio patrimonio = new Patrimonio();
	private Movimentacao movimentacao = new Movimentacao();
	private UltimaMovimentacao ultimaMovimentacao = new UltimaMovimentacao();
	private Setor setor = new Setor();
	private Setor SetorAtual = new Setor();
	private OrgaoExterno orgaoExterno = new OrgaoExterno();
	private boolean externo;
	private SetorDAO setorDao = new SetorDAO();
	private PatrimonioDAO patrimonioDao = new PatrimonioDAO();
	private MovimentacaoDAO movimentacaoDao = new MovimentacaoDAO();
	private UltimaMovimentacaoDAO ultimaMoviDAO = new UltimaMovimentacaoDAO();
	private OrgaoExternoDAO orgaoDao = new OrgaoExternoDAO();
	private List<Movimentacao> listaMovimentacoesPorPatrimonio = new ArrayList<Movimentacao>();
	private List<SelectItem> listaDeTdsSetores = new ArrayList<SelectItem>();
	private List<SelectItem> listaDeOrgsExternos = new ArrayList<SelectItem>();
	

	
	public MovimentacaoMBean() {
		
	}
	
	
	 public void showExterno() {  
		         System.out.println("is externo: " + externo);  
		     } 
	
	/* public void setaTrue(ActionEvent evt){ 
		 this.setExterno(true);  
		}*/
	
	public List<Movimentacao> listarTdasMovimentacoes(){
		
		List<Movimentacao> lista = this.movimentacaoDao.buscarMovimentacaoPorCodPatrimonio(this.patrimonio.getCdPatrimonio());
		
		return lista;
		
	}
	
	
	public List<SelectItem> listarSetores(){
		
		List<SelectItem> listaSetores = new ArrayList<SelectItem>();
		
		List<Setor> listaTemporaria = setorDao.listarTodosSetores();
		
		for(Setor setor : listaTemporaria){
			
			listaSetores.add(new SelectItem(setor.getCdSetor(),setor.getSiglaSetor()));
		}
		
		return listaSetores;
		
	}


	public List<SelectItem> listarOrgaosExternos(){
		
List<SelectItem> listaOrgaos = new ArrayList<SelectItem>();
		
		List<OrgaoExterno> listaTemporaria = orgaoDao.buscarTodos();
		
		for(OrgaoExterno orgao : listaTemporaria){
			
			listaOrgaos.add(new SelectItem(orgao.getCdOrgao(),orgao.getDsSigla()));
		}
		
		
		return listaDeOrgsExternos;
		
		
		
	}
	

	public String movimentarPatrimonio(){

	
	this.setor = setorDao.findById(this.setor.getCdSetor());
	
	//System.out.println("PATRIMONIO: "+this.patrimonio.getNotaFiscalBens());
	
	this.movimentacao.setSetor(this.setor);
	this.movimentacao.setPatrimonio(this.patrimonio);
	
	
/*	if (!ultimaMoviDAO.listarUltMovimentacao(this.patrimonio).isEmpty()){
	
	this.ultimaMovimentacao = ultimaMoviDAO.listarUltMovimentacao(this.patrimonio).get(0);
	
	this.movimentacao = movimentacaoDao.buscarMovimentacaoPorCodPatrimonio(this.patrimonio.getCdPatrimonio());
	
	movimentacaoDao.update(movimentacao);
	
	}*/
	
	this.patrimonio.setMovimentado(true);
	
	patrimonioDao.updateEntity(this.patrimonio);
	
	movimentacaoDao.addEntity(this.movimentacao);
	
	return "MovimentarPatrimonio";
	
	
	
}

	


	/**
	 * @param patrimonio the patrimonio to set
	 */
	public void setPatrimonio(Patrimonio patrimonio) {
		this.patrimonio = patrimonio;
	}


	/**
	 * @return the patrimonio
	 */
	public Patrimonio getPatrimonio() {
		return patrimonio;
	}


	/**
	 * @param movimentacao the movimentacao to set
	 */
	public void setMovimentacao(Movimentacao movimentacao) {
		this.movimentacao = movimentacao;
	}


	/**
	 * @return the movimentacao
	 */
	public Movimentacao getMovimentacao() {
		return movimentacao;
	}


	/**
	 * @param listaDeTdsSetores the listaDeTdsSetores to set
	 */
	public void setListaDeTdsSetores(List<SelectItem> listaDeTdsSetores) {
		this.listaDeTdsSetores = listaDeTdsSetores;
	}


	/**
	 * @return the listaDeTdsSetores
	 */
	public List<SelectItem> getListaDeTdsSetores() {
		
		setListaDeTdsSetores(this.listarSetores());
		
		return listaDeTdsSetores;
	}

	/**
	 * @param setor the setor to set
	 */
	public void setSetor(Setor setor) {
		this.setor = setor;
	}

	/**
	 * @return the setor
	 */
	public Setor getSetor() {
		
		return setor;
	}

	/**
	 * @param setorAtual the setorAtual to set
	 */
	public void setSetorAtual(Setor setorAtual) {
		SetorAtual = setorAtual;
	}

	/**
	 * @return the setorAtual
	 */
	public Setor getSetorAtual() {
		
List<Movimentacao> movTemporaria = new ArrayList<Movimentacao>();
		
		movTemporaria = movimentacaoDao.buscarMovimentacaoPorCodPatrimonio(this.patrimonio.getCdPatrimonio());
		
		for (Movimentacao movimentacao : movTemporaria) {
			
			//System.out.println("SETOR DA MOVIMENTAÇÃO: "+movimentacao.getSetor().getSiglaSetor());
			
			this.SetorAtual = movimentacao.getSetor();
			
		}
		
		
		
		return SetorAtual;
	}

	
	/**
	 * @param listaMovimentacoesPorPatrimonio the listaMovimentacoesPorPatrimonio to set
	 */
	public void setListaMovimentacoesPorPatrimonio(
			List<Movimentacao> listaMovimentacoesPorPatrimonio) {
		this.listaMovimentacoesPorPatrimonio = listaMovimentacoesPorPatrimonio;
	}

	/**
	 * @return the listaMovimentacoesPorPatrimonio
	 */
	public List<Movimentacao> getListaMovimentacoesPorPatrimonio() {
		setListaMovimentacoesPorPatrimonio(listarTdasMovimentacoes());
		
		return listaMovimentacoesPorPatrimonio;
	}



	public void setListaDeOrgsExternos(List<SelectItem> listaDeOrgsExternos) {
		this.listaDeOrgsExternos = listaDeOrgsExternos;
	}

	public List<SelectItem> getListaDeOrgsExternos() {
		
		setListaDeOrgsExternos(listarOrgaosExternos());
		
		return listaDeOrgsExternos;
	}

	public void setOrgaoExterno(OrgaoExterno orgaoExterno) {
		this.orgaoExterno = orgaoExterno;
	}

	public OrgaoExterno getOrgaoExterno() {
		return orgaoExterno;
	}

	public void setExterno(boolean externo) {
		this.externo = externo;
	}

	public boolean isExterno() {
		return externo;
	}



	
}

o web.xml já foi postado em cima.

faces.config

<managed-bean>
  <managed-bean-name>movimentacaoMBean</managed-bean-name>
  <managed-bean-class>patrimonio.faces.MovimentacaoMBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>

… da uma olhadinha, como é idêntico ao teu.

thiago.correa

Cara, tem um

javax.faces.DEFAULT_SUFFIX .xhtml

e um

Faces Servlet *.jsf

que não tão batendo, como você está acessando a tua página?! pagina.jsf ou pagina.xhtml !!!

Eu uso facelets com jsf e o richfaces em um outro projeto e funciona, esse que eu passei era apenas utilizando jsf.

Faça um teste, troque o

.jsf
para
.xhtml

e teste de novo

EuclidesFilizola

minhas paginas são *.xhtml, por isso eu utilizo

&lt;context-param&gt;
  &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
  &lt;param-value&gt;.xhtml&lt;/param-value&gt;
 &lt;/context-param&gt;

e por isso tenho:

&lt;servlet-mapping&gt;
  &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
  &lt;url-pattern&gt;*.jsf&lt;/url-pattern&gt;
 &lt;/servlet-mapping&gt;
R

thiago.correa:
Cara, tem um

javax.faces.DEFAULT_SUFFIX .xhtml

e um

Faces Servlet *.jsf

que não tão batendo, como você está acessando a tua página?! pagina.jsf ou pagina.xhtml !!!

Eu uso facelets com jsf e o richfaces em um outro projeto e funciona, esse que eu passei era apenas utilizando jsf.

Faça um teste, troque o

.jsf
para
.xhtml

e teste de novo

Mas a forma certa é *.jsf mesmo,que é como está o mapeamento do Faces Servlet.

Dessa forma,uma chamada a pagina.jsf redirecionará para pagina.xhtml

thiago.correa

Velho outra coisa que eu reparei, tu tem 2 filters configurados, apenas um basta

<filter> <display-name>RichFaces Filter</display-name> <filter-name>richfaces</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>richfaces</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping>

thiago.correa

raf4ever:
thiago.correa:
Cara, tem um

javax.faces.DEFAULT_SUFFIX .xhtml

e um

Faces Servlet *.jsf

que não tão batendo, como você está acessando a tua página?! pagina.jsf ou pagina.xhtml !!!

Eu uso facelets com jsf e o richfaces em um outro projeto e funciona, esse que eu passei era apenas utilizando jsf.

Faça um teste, troque o

.jsf
para
.xhtml

e teste de novo

Mas a forma certa é *.jsf mesmo,que é como está o mapeamento do Faces Servlet.

Dessa forma,uma chamada a pagina.jsf redirecionará para pagina.xhtml

É verdade, eu me confundi com um aconselhamento de que, quando se usar páginas xhtml, utilizar o mapeamento do JSF como xhtml também!

R

thiago.correa:
Velho outra coisa que eu reparei, tu tem 2 filters configurados, apenas um basta

<filter> <display-name>RichFaces Filter</display-name> <filter-name>richfaces</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>richfaces</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping>

Na verdade isso ai não são 2 filtros,mas sim um filtro e a declaração do mapeamento… :wink:

No caso,o filtro do RichFaces intercepta todas as requisições .jsf

EuclidesFilizola

eu acabei de ajeitar isso, e infelimente, nada funciona. =(

R

nenhuma msg de erro,warning,nada???

EuclidesFilizola

nenhum error, nenhum rerended, nada.

e detalhe, qndo eu coloco para debbug, ele não entra no método “showExterno” , ou melhor, ele parece q nem chama o MB.

R

e se vc tentar o exemplo que o nosso amigo postou?

sei q está bem parecido,mas tente criando uma nova página e um novo MB.Apenas pra desencargo de consciência.

thiago.correa

Meu conselho, faça um projeto só com essa parte, comce com jsf, depois com o rich faces e por último com o facelets, daí você vai descobrir aonde está o furo da bala! Ou, tente aumentar os níveis de log para ver se nenhum dos 3 frameworks não estão tentando alertar de algum problema!

Pois como disse, só com o jsf + richfaces, funfou legal! Tenho em casa um outro projeto com jsf,richaces,facelets,spring e hibernate e funciona 100%. É bem provável que seja alguma coisa de configuração no web.xml! Ele não dá nenhum erro de JS???! Dá uma olhada no console do Firefox!

EuclidesFilizola

pelo visto, vou ter que voltar pro velho javascript…

vai ser o único jeito pelo visto, até alguem tentar uma outra solução.

Ygor
Tire o tomahawk apenas pra teste. Pode estar dando conflito(improvavel, mas não custa tentar);

E se possivel poste uma img de como esta a organização das suas pastas. Coloque o escopo do MB para session, e declare o externo começando como TRUE;

O Check box deve ser renderizado selecionado e o painelGroup também deve ser renderizado.

E se possivel coloque um print no construtor do MB, pode ser algo do tipo new Eu hahahaha <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pngtuck_out_tongue.png?v=6" title=":stuck_out_tongue:" class="emoji" alt=":stuck_out_tongue:">
Ygor

Tente assim

<managed-bean>
  <managed-bean-name>movimentacaoMBean</managed-bean-name>
  <managed-bean-class>br.gov.ce.srh.patrimonio.faces.MovimentacaoMBean</managed-bean-class> 
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
thiago.correa

Ygor:
EuclidesFilizola:

faces.config

<managed-bean>
  <managed-bean-name>movimentacaoMBean</managed-bean-name>
 <managed-bean-class>patrimonio.faces.MovimentacaoMBean</managed-bean-class> 
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>

Tente assim

<managed-bean> <managed-bean-name>movimentacaoMBean</managed-bean-name> <managed-bean-class>br.gov.ce.srh.patrimonio.faces.MovimentacaoMBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>

Acho que você matou a charada!
:lol:

EuclidesFilizola

thiago.correa:
Ygor:
EuclidesFilizola:

faces.config

<managed-bean>
  <managed-bean-name>movimentacaoMBean</managed-bean-name>
 <managed-bean-class>patrimonio.faces.MovimentacaoMBean</managed-bean-class> 
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>

Tente assim

<managed-bean> <managed-bean-name>movimentacaoMBean</managed-bean-name> <managed-bean-class>br.gov.ce.srh.patrimonio.faces.MovimentacaoMBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>

Acho que você matou a charada!
:lol:

boa tarde amigo,

eu não coloquei na imagem “br.gov.ce.srh” para não expor a entidade mencionada. Entendeu cara ?

R

O problema continua então?

EuclidesFilizola

Problema resolvido.

Mudei 2 coisas "basicas".

Primeiro passe de <h:form> para <a4j:form> ,

no meu MB

eu troquei private boolean externo, para private Boolean externo = false;

agora ficou o código abaixo funcionando:

&lt;a4j:form id="form_ajax"&gt;

       
         &lt;a4j:outputPanel ajaxRendered="true"&gt;   
             &lt;h:messages showDetail="true"/&gt;   
         &lt;/a4j:outputPanel&gt;
       
         &lt;h:panelGroup id="painel_orgao_pai" &gt; 
             &lt;h:outputLabel value="Externo"/&gt; 
             &lt;h:selectBooleanCheckbox  id="id_externo" value="#{movimentacaoMBean.externo}" &gt; 
             &lt;a4j:support reRender="form_ajax" event="onclick" 
               action="#{movimentacaoMBean.setaTrue}"/&gt; 
             &lt;/h:selectBooleanCheckbox&gt; 
             <br /> 
      
                &lt;h:panelGroup id="painel_orgao_externo"  rendered="#{movimentacaoMBean.externo}"&gt; 
                   &lt;h:outputLabel value="Orgao externo" id="lb_orgaoexterno"/&gt; 
                     &lt;h:selectOneMenu value="#{movimentacaoMBean.orgaoExterno.cdOrgao}" id="codOrgao" &gt; 
                       &lt;f:selectItems value="#{movimentacaoMBean.listaDeOrgsExternos}" /&gt; 
                   &lt;/h:selectOneMenu&gt; 
             &lt;/h:panelGroup&gt; 
     &lt;/h:panelGroup&gt;
       
        &lt;/a4j:form&gt;

Agradeço a compreensão de todos, preciso verificar depois, só porque no h:form não funcionou.

Abraços,

R

Massa!

Acho estranho de qualquer forma,mas o importante é que resolveu :lol:

J

Solucionado

Criado 16 de setembro de 2010
Ultima resposta 19 de fev. de 2011
Respostas 87
Participantes 7