[Resolvido]commandLink nao eh executado dentro do dataTable

Pessoal, estou utilizando o commandLink + setPropertyActionListener p abrir outra pagina. Ja fiz isso antes e tava funcionando perfeitamente…
Mas agora nao quer abrir a tal pagina… A unica coisa q acontece eh carregar a mesma pagina.

edit: ja coloquei o nome d um metodo q nao existe no action do commandLink e nada acontece… resultado: o commandLink nao esta sendo executado


<h:dataTable value="#{requisicaoBean.reqMoviItem}" var="req" rules="rows" cellpadding="5" >  
                <f:facet name="caption">  
                    
                </f:facet>  
                <f:facet name="header">Lista de itens</f:facet>  
                  <f:facet name="footer">Final da listagem</f:facet>  
                 <h:column>  
                    <f:facet name="header">#R</f:facet>  
                     <h:outputText value="#{req.codigoRequisicao}" /> 
                </h:column>  
                <h:column>  
                    <f:facet name="header">Item</f:facet>  
                    #{req.nomeItem}
                </h:column>  
                <h:column>  
                    <f:facet name="header">Qntd Solicitada</f:facet>  
                 #{req.quantidadeSolicitada}
                </h:column>  
               <h:column>  
                    <f:facet name="header">Qntd Atendida</f:facet>  
                   #{req.quantidadeAtendida}
               </h:column>
               <h:column>
					<h:commandLink action="#{requisicaoBean.editarItem}" immediate="true" >
						<h:graphicImage library="imagens" name="editar16.png"  />
						<f:setPropertyActionListener target="#{requisicaoBean.codigoRequisicao}" value="#{req.codigoRequisicao}"/>
						<f:setPropertyActionListener target="#{requisicaoBean.destinoSalvarItem}" value="pages/vip/movimentacao_item"/>
					</h:commandLink>
				</h:column>
            </h:dataTable>
         

	public String editarItem() {
		
		return "/pages/vip/movimentacao_item";
	}
	

Pagina q deveria abrir:

[code]Movimentação
</ui:define>
<ui:define name=“corpo”>
<h:form id=“cadastro”>
<h:messages />
<h:inputHidden value="#{requisicaoBean.codigoRequisicao}" />

		<h:panelGrid columns="2">
			
			<h:outputLabel value="Item:" for="nomeItem" />
			<h:inputText id="nomeItem" label="NomeItem" 
			value="#{requisicaoBean.nomeItem}"
			 required="true" style="background-color:#F5F5F5" disable="true" readonly="true"/>
			 
			<h:outputLabel value="Quantidade Solicitada:" for="quantidadeSolicitada" />
			<h:inputText id="quantidadeSolicitada" label="quantidadeSolicitada" size="4"
				value="#{requisicaoBean.quantidadeSolicitada}" 
				 style="background-color:#F5F5F5" disable="true" readonly="true" />
				 
			
			<h:outputLabel value="Quantidade Atendida:" for="quantidadeAtendida" />
			<h:inputText id="quantidadeAtendida" label="quantidadeAtendida" size="4"
				value="#{requisicaoBean.quantidadeAtendida}"/>

			
			<h:outputText value="Status:"/>  
    		<h:selectOneMenu value ="#{requisicaoBean.status}">
			<f:selectItem itemLabel="Selecione:" itemValue=""/>  
			<f:selectItems 
				value="#{requisicaoBean.listarNomeStatus}"
				var ="listarNomesStatus"
				itemValue="#{listarNomesStatus}"
				itemLabel="#{listarNomesStatus}"/>
			</h:selectOneMenu>		
			<br/>
			<br/>
			<h:commandButton action="#{requisicaoBean.atualizarRequisicao}" value="Atualizar" />
		</h:panelGrid>
	</h:form>
</ui:define>

</ui:composition>

[/code]

pra que vc está utilizando isso:

<f:setPropertyActionListener target="#{requisicaoBean.destinoSalvar}" value="pages/vip/movimentacao_item"/> ???

Tendo em vista que seu método está retornando a url da próxima pagina.

[quote=kleberdamasco]pra que vc está utilizando isso:

<f:setPropertyActionListener target="#{requisicaoBean.destinoSalvar}" value="pages/vip/movimentacao_item"/> ???

Tendo em vista que seu método está retornando a url da próxima pagina.[/quote]

Sempre fiz desse jeito e sempre funcionou. Aprendi isso no livro “java para web”

Vc faria de q jeito ?

se vc no seu método editarItem
fizesse return destinoSalvar; Ai sim teria finalidade aquela linha, caso contrário não.

Você utiliza essa variavel dentro do seu mb?
poste também o inicio da pagina que você quer chamar…

[quote=kleberdamasco]Você utiliza essa variavel dentro do seu mb?
poste também o inicio da pagina que você quer chamar…[/quote]

Utilizo sim.

Pagina q eu quero chamar

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">

<ui:composition template="/templates/interna.xhtml">
	<ui:define name="titulo">
Movimentação 
</ui:define>
	<ui:define name="corpo">
		<h:form id="cadastro">
			<h:messages />
				<h:inputHidden value="#{requisicaoBean.codigoRequisicao}" />
				<h:inputHidden value="#{requisicaoBean.nomeItem}" />
				<h:inputHidden value="#{requisicaoBean.quantidadeSolicitada}" />
					
				
			<h:panelGrid columns="2">
			
			
				<h:outputLabel value="#R:" for="codigoRequisicao" />
				<h:inputText id="codigoRequisicao" label="CodigoRequisicao" 
				value="#{requisicaoBean.codigoRequisicao}"
				 required="true" style="background-color:#F5F5F5" disable="true" readonly="true" size="4"/>
				
				<h:outputLabel value="Item:" for="nomeItem" />
				<h:inputText id="nomeItem" label="NomeItem" 
				value="#{requisicaoBean.nomeItem}"
				 required="true" style="background-color:#F5F5F5" disable="true" readonly="true"/>
				 
				<h:outputLabel value="Quantidade Solicitada:" for="quantidadeSolicitada" />
				<h:inputText id="quantidadeSolicitada" label="quantidadeSolicitada" size="4"
					value="#{requisicaoBean.quantidadeSolicitada}" 
					 style="background-color:#F5F5F5" disable="true" readonly="true" />
					 
				
				<h:outputLabel value="Quantidade Atendida:" for="quantidadeAtendida" />
				<h:inputText id="quantidadeAtendida" label="quantidadeAtendida" size="4"
					value="#{requisicaoBean.quantidadeAtendida}"/>
				<br/>
					<br/>
						<br/>
				<h:commandButton action="#{requisicaoBean.atualizarRequisicao}" value="Atualizar" />
			</h:panelGrid>
		</h:form>
	</ui:define>
</ui:composition>
</html>

Fiz isso na pagina anterior e funcionou…

<h:commandLink action="#{requisicaoBean.editar}">
						<h:graphicImage library="imagens" name="editar_requisicao.png" style="border:0"/>
						<f:setPropertyActionListener target="#{requisicaoBean.codigoRequisicao}" value="#{req.codigoRequisicao}"/>
						<f:setPropertyActionListener target="#{requisicaoBean.destinoSalvar}" value="pages/vip/movimentacao_requisicao"/>
					</h:commandLink>

Parece q eh um bug do jsf… Qnd chegar no trabalho vou tentar resolver

http://sobrecodigo.com/jsf_commandlink_datatable_problemas/

[quote=tiago__]Parece q eh um bug do jsf… Qnd chegar no trabalho vou tentar resolver

http://sobrecodigo.com/jsf_commandlink_datatable_problemas/

[/quote]

Realmente foi um bug do jsf. Tive q usar richfaces p resolver meu problema…

 <rich:dataTable value="#{requisicaoBean.reqMoviItem}" var="req" iterationStatusVar="it" id="table" rows="15" >
            <rich:column>
                <f:facet name="header">#R</f:facet>
                #{req.codigoRequisicao}
            </rich:column>
                <rich:column>
                    <f:facet name="header">Item</f:facet>  
                    <h:outputText value="#{req.nomeItem}" style="font-size: 14px;"/>
               </rich:column>
               <rich:column>
                    <f:facet name="header">Qntd Solicitada</f:facet>  
                 <h:outputText value="#{req.quantidadeSolicitada}" style="font-size: 14px;"/>
                </rich:column> 
               <rich:column>  
                    <f:facet name="header">Qntd Atendida</f:facet>  
                   <h:outputText value="#{req.quantidadeAtendida}" style="font-size: 14px;"/>
              </rich:column>
               <rich:column>
               
             		<h:commandLink >
             				<h:graphicImage library="imagens" name="itens_req.png" style="border:0" />
             				<f:setPropertyActionListener target="#{requisicaoBean.codigoRequisicao}" value="#{req.codigoRequisicao}"/> 
             				<f:setPropertyActionListener target="#{requisicaoBean.nomeItem}" value="#{req.nomeItem}"/> 
             				<f:setPropertyActionListener target="#{requisicaoBean.quantidadeSolicitada}" value="#{req.quantidadeSolicitada}"/>
        					<rich:componentControl target="popup" operation="show" />
    				</h:commandLink>
    				
               </rich:column>
              
            </rich:dataTable>

			<!-- Adicionar/Mudar a quantidadeAtendida do ITEM (popup) -->

			<rich:popupPanel id="popup" modal="false" autosized="true"
				resizeable="false">
						
						<h:inputHidden value="#{requisicaoBean.codigoRequisicao}" />
						<h:inputHidden value="#{requisicaoBean.nomeItem}" />
						<h:inputHidden value="#{requisicaoBean.quantidadeSolicitada}" />
						
				<f:facet name="header">
					<h:outputText value="Simple popup panel" />
				</f:facet>
				<f:facet name="controls">
					<h:outputLink value="#"
						onclick="#{rich:component('popup')}.hide(); return false;">
                FECHAR
            </h:outputLink>
				</f:facet>
							
				<h:outputLabel value="#" for="codigoRequisicao" style="font-size: 14px;"/>
				<h:inputText id="codigoRequisicao" label="CodigoRequisicao" 
				value="#{requisicaoBean.codigoRequisicao}"
				 required="true"  disable="true" readonly="true" size="4" style="font-size: 14px;"/>
				<br/>
				<h:outputLabel value="Item:" for="nomeItem" style="font-size: 14px;"/>
				<h:inputText id="nomeItem" label="NomeItem" 
				value="#{requisicaoBean.nomeItem}"
				 required="true"  disable="true" readonly="true" style="font-size: 14px;"/>
				 <br/>
				<h:outputLabel value="Qntd Solicitada:" for="quantidadeSolicitada" style="font-size: 14px;"/>
				<h:inputText id="quantidadeSolicitada" label="quantidadeSolicitada" size="4"
					value="#{requisicaoBean.quantidadeSolicitada}" 
					 disable="true" readonly="true" style="font-size: 14px;"/>
					 
				<br/>
				<h:outputLabel value="Qntd Atendida:" for="quantidadeAtendida" style="font-size: 14px;"/>
				<h:inputText id="quantidadeAtendida" label="quantidadeAtendida" size="4"
					value="#{requisicaoBean.quantidadeAtendida}" style="font-size: 14px;"/>
				<br/>
					<br/>
						<br/>
				<a4j:commandButton actionListener="#{requisicaoBean.atualizarRequisicao}"  
                        value="Atualizar"  execute="popup"  
                        onclick="#{rich:component('popup')}.hide();">  
                </a4j:commandButton>  				

			</rich:popupPanel>