<h:coomandButton dentro do <rich:datatable> versão 3.3.2.SR1

10 respostas
DiegoMau

pessoal tenho um

<h:commandbutton value="Nome do metodo" action="#{MB.metodo}">

dentro de um <rich:datatable> só que esse comandbutton não executa a ação, mas quando coloco o command buton fora do rich:datatable a ação funciona.

pesquisei e verifiquei que vc não consegue usar um comandButton ou commandLink dentro do rich:datatable não funciona, alguem sabe uma solução.

10 Respostas

jonathanprogrammer

DiegoMau:
pessoal tenho um

<h:commandbutton value="Nome do metodo" action="#{MB.metodo}">

dentro de um <rich:datatable> só que esse comandbutton não executa a ação, mas quando coloco o command buton fora do rich:datatable a ação funciona.

pesquisei e verifiquei que vc não consegue usar um comandButton ou commandLink dentro do rich:datatable não funciona, alguem sabe uma solução.

Tu adiciono ele dentro de um <h:form></h:form> ou a4j:form</a4j:form>???

DiegoMau

testei os dois

jonathanprogrammer

Que estranho!

Posta teu código pra dar uma olhada!

Teu managedbean e tua pagina!

DiegoMau

acredito q não seja isso não pois fora do ta ok mas vamos lá

rich:dataTable value="#{processoMB.tramitacoes}"  var="tramitacao"   style="width: 500px" id="tabela" >

 

<rich:column>
<f:facet name="header">
<h:outputText value="Setor Origem"></h:outputText>
</f:facet>
<h:outputText value="#{tramitacao.setor_Origem.nom_Setor}" ></h:outputText>
</rich:column>

<rich:column>
<f:facet name="header">
<h:outputText value="Data Envio"></h:outputText>
</f:facet>
<h:outputText value="#{tramitacao.dt_Envio}" ></h:outputText>
</rich:column>

<rich:column>
<f:facet name="header">
<h:outputText value="Setor Destino"></h:outputText>
</f:facet>
<h:outputText  value="#{tramitacao.setor_Destino.nom_Setor}"  ></h:outputText>
</rich:column>

<rich:column>
<f:facet name="header">
<h:outputText value="Data Recebida"></h:outputText>
</f:facet>
<h:outputText  value="#{tramitacao.dt_Recebido}"  ></h:outputText>
</rich:column>

<rich:column>
<f:facet name="header">
<h:outputText value="Observações"></h:outputText>
</f:facet>
<h:outputText  value="#{tramitacao.obs_Tramitacao}"  ></h:outputText>
</rich:column>

<rich:column rendered="#{processoMB.funcionario.priv_Funcionario == 1 and processoMB.tramitacao.status_Tramitacao == 1}" >
<f:facet name="header">
<h:outputText value="Status da Tramitação"></h:outputText>
</f:facet>



<a4j:commandLink  value=" Recebimento" action="#{processoMB.confirmarTramitacao}" immediate="true" reRender="tabela">
<a4j:actionparam value="#{tramitacao}" assignTo="#{processoMB.tramitacao}" />  
</a4j:commandLink>

<a4j:commandLink  value=" Recebimento" action="#{processoMB.confirmarTramitacao}"  reRender="tabela">
<f:setPropertyActionListener value="#{tramitacao}" target="#{processoMB.tramitacao}" /> 
</a4j:commandLink>


<h:commandLink  value="Confirma Recebimento" action="#{processoMB.confirmarTramitacao}" >
<a4j:actionparam value="#{tramitacao}" assignTo="#{processoMB.tramitacao}" />   
</h:commandLink>

<h:commandLink  value="Confirma Recebimento" action="#{processoMB.confirmarTramitacao}" immediate="true" >
<f:setPropertyActionListener value="#{tramitacao}" target="#{processoMB.tramitacao}" />  
</h:commandLink>

</rich:column>


</rich:dataTable>

Classe ProcessoMB.java

public String confirmarTramitacao(){
		JOptionPane.showMessageDialog(null, tramitacao.getCod_Tramitacao());

		tramitacao.setStatus_Tramitacao(2);
		tramitacao.setDt_Recebido(new Date());
		ProcessoRN.alterar(tramitacao);
		
		return"";
		
	}

Faces-config.xml

<managed-bean>
<managed-bean-name>processoMB</managed-bean-name>
<managed-bean-class>br.com.ifba.controller.ProcessoMB</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
jonathanprogrammer

Ele da uma exception?!

Ou só não executa?!

DiegoMau

tanto do a4j:form quanto do <h:form > se eu uso a4j:commandLink ele não faz nada e se eu uso <h:commandLink> com e sem immediate =“true” ele da um refresh na pagina e apaga meus dados da tabela

DiegoMau

amigo como eu li acredito que seja um bug do richfaces, solucionei da seguinte maneira mudei o scope do MB para session, não queria fazer isso, pois não a necessidade de o MB ser do scope session, pois quando coloco o scopo session os campos ficam tudo sujo
mesmo assim obrigado, vou ter q tratar essa questão

jonathanprogrammer

DiegoMau:
amigo como eu li acredito que seja um bug do richfaces, solucionei da seguinte maneira mudei o scope do MB para session, não queria fazer isso, pois não a necessidade de o MB ser do scope session, pois quando coloco o scopo session os campos ficam tudo sujo
mesmo assim obrigado, vou ter q tratar essa questão

Dai tu vai ter que criar métodos para setar essas informações do teu bean!

Se não me engano
tinha um esquema do richfaces que é o keepAlive
que deixava o bean entre a session e a request!

da uma lida e testada pra ver se com esse keepAlive ele resolve teu problema de ter que coloca na session!

:smiley:

DiegoMau

meu velho vc não vai nem acreditar descobri o problema na verdade não estava no datatable não, e sim no metodo que montava a datatable,

pois assim

public List<TramitacaoVO> getTramitacoes() {
		return ProcessoRN.tramitacoes(processo);

	}

esse processo que era passado como parametro era de outra pagina e como eu deixei o metodo no mesmo MB ele instanciou a classe Processo, e passa o processo como paramentro só que null,

entendeu??

mesmo assim valeu ae a força

jeroqueiroz

Conseguiram resolver?

Criado 7 de dezembro de 2009
Ultima resposta 9 de jun. de 2010
Respostas 10
Participantes 3