Action do <h:commandLink> não está funcionando

33 respostas
robertoJames

Boa tarde pessoal,

eu tenho um datatable, na qual quero editar o registro desejado. Quando eu clico em “editar” ele não executa a action, ou seja, ele n redireciona para a tela de alterar, e simplesmente da um refresh na minha datatable. Alguém saberia me explicar ?

Aqui está o código:

<h:form id="formcons">
		
		<rich:panel>
		<f:facet name="header" >
				 <h:outputText value="Consulta Infracao"/>
				</f:facet>
				
		
				<h:outputLabel value="Pesquisar por" for="tpoParametro"/>
				<h:inputText value="#{infracaoBean.tipoDeParametro}" id="tpoParametro" size="10" maxlength="20" />
				<h:commandButton action= "#{infracaoBean.listarInfracoesPorParametro}" value="Pesquisar" />
				<h:selectOneRadio id="status" value="#{infracaoBean.status}"  style="left:67px;" >
					<f:selectItem escape="false" itemLabel="Data" itemValue="0" /> 
						<f:selectItem escape="false" itemLabel="Motorista" itemValue="1" /> 
							<f:selectItem escape="false" itemLabel="Tipo de Multa" itemValue="2" /> 
					
				</h:selectOneRadio>
			
	
		<rich:dataTable value="#{infracaoBean.infracoes}" var="i" style=" width : 600px; "
					onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
                    onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
                    cellpadding="0" cellspacing="0" rows="10">
			 
			 <f:facet name="header">
             	<rich:columnGroup>
	                <h:column><h:outputText value="#{lb['codigo']}" /></h:column>
	                <h:column><h:outputText value="#{lb['dt.infracao']}" /></h:column>
	                <h:column><h:outputText value="#{lb['hora.infrcao']}" /></h:column>
	                <h:column><h:outputText value="#{lb['pontuacao']}" /></h:column>
	                <h:column><h:outputText value="Tipo de Multa" /></h:column>
	                <h:column><h:outputText value="#{lb['motorista']}" /></h:column>
	                <h:column><h:outputText value="Pagamento" /></h:column>
	                <h:column><h:outputText value="#{lb['editar']}" /></h:column>
	                <h:column><h:outputText value="#{lb['excluir']}" /></h:column>
	                
                </rich:columnGroup>
             </f:facet>
                
			<h:column>
				<h:outputText value="#{i.cdInfracao}"/>
			</h:column>
			<h:column>
				<h:outputText value="#{i.dtInfracao}"/>
			</h:column>
			<h:column>
				<h:outputText value="#{i.horaInfracao}">
					<f:convertDateTime  type="time" pattern="HH:mm" timeZone="GMT-3"/>
				</h:outputText>
			</h:column>
			<h:column>
				<h:outputText value="#{i.tipoInfracao.dsTipoInfracao}" />
			</h:column>
			<h:column>
				<h:outputText value="#{i.catInfracao.descCategoriaInfracao}" />
			</h:column>
			
			<h:column>
			<h:outputText value="#{i.motorista.nome}" />
			</h:column>
			
			<h:column>
			<h:selectBooleanCheckbox value="#{i.status}" readonly="true"/>
			</h:column>
			
			
			<h:column>
				<h:commandLink  action="#{infracaoBean.alterarInfracao}">
					<f:setPropertyActionListener target="#{infracaoBean.infracao}"
						value="#{i}" />
					<h:graphicImage value="/images/edit.png" alt="editar" style="border:0"/>
				</h:commandLink>
			</h:column>
			<h:column>
				<h:commandLink action="#{infracaoBean.remover}">
					<f:setPropertyActionListener target="#{infracaoBean.infracao}"
						value="#{i}" />
					<h:graphicImage value="/images/excluir.gif" alt="excluir" style="border:0"/>
				</h:commandLink>
			</h:column>
		</rich:dataTable>
		<center><h:outputText value="Nenhuma infração cadastrada." rendered="#{empty infracaoBean.infracoes}" /></center>
	</rich:panel>
	
	</h:form>

33 Respostas

H

Coloca o seu método alterarInfracao, e o seu facesconfig? Está usando jsf 2.0?

robertoJames

faces.config

Managed Beans -->
 <managed-bean>
  <managed-bean-name>categoriaBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.CategoriaBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
   <property-name>categorias</property-name>
   <property-class>java.util.List</property-class>
   <list-entries/>
  </managed-property>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>infracaoBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.InfracaoBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>marcaBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.MarcaBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>modeloBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.ModeloBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
   <property-name>obterMarcas</property-name>
   <property-class>br.sicf.bean.ModeloBean</property-class>
   <list-entries/>
  </managed-property>
 </managed-bean>
 <!--<managed-bean>
  <managed-bean-name>motoristaBean</managed-bean-name>
  <managed-bean-class>bean.MotoristaBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 -->
 <managed-bean>
  <managed-bean-name>oficinaBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.OficinaBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>solicitacaoAbastecimentoBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.SolicitacaoAbastecimentoBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>solicitacaoManutencaoBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.SolicitacaoManutencaoBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
   <property-name>solicitacoesManutencoes</property-name>
   <property-class>java.util.List</property-class>
   <value/>
  </managed-property>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>solicitacaoTransporteBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.SolicitacaoTransporteBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>telefoneBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.TelefoneBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
   <property-name>telefones</property-name>
   <property-class>java.util.List</property-class>
   <list-entries/>
  </managed-property>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>tipoCombustivelBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.TipoCombustivelBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>tipoTelefoneBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.TipoTelefoneBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>tipoVeiculoBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.TipoVeiculoBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
   <property-name>tiposVeiculos</property-name>
   <property-class>java.util.List</property-class>
   <list-entries/>
  </managed-property>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>veiculoBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.VeiculoBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>conservacaoBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.ConservacaoBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>fileUploadBean</managed-bean-name>
  <managed-bean-class>br.sicf.bean.FileUploadBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <!-- Navegação de Cadastro -->
 <navigation-rule>
  <from-view-id>*</from-view-id>
  <navigation-case>
   <from-outcome>cad_categoria</from-outcome>
   <to-view-id>/pages/cadastro/cad_categoria.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_marca</from-outcome>
   <to-view-id>/pages/cadastro/cad_marca.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_modelo</from-outcome>
   <to-view-id>/pages/cadastro/cad_modelo.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_tipo_veiculo</from-outcome>
   <to-view-id>/pages/cadastro/cad_tipo_veiculo.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_infracao</from-outcome>
   <to-view-id>/pages/cadastro/cad_infracao.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_veiculo</from-outcome>
   <to-view-id>/pages/cadastro/cad_veiculo.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_oficina</from-outcome>
   <to-view-id>/pages/cadastro/cad_oficina.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_solicitacao_transporte</from-outcome>
   <to-view-id>/pages/cadastro/cad_solicitacao_transporte.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_solicitacao_abastecimento</from-outcome>
   <to-view-id>/pages/cadastro/cad_solicitacao_abastecimento.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_solicitacao_manutencao</from-outcome>
   <to-view-id>/pages/cadastro/cad_solicitacao_manutencao.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_telefone</from-outcome>
   <to-view-id>/pages/cadastro/cad_telefone.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_tipo_telefone</from-outcome>
   <to-view-id>/pages/cadastro/cad_tipo_telefone.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_tipo_combustivel</from-outcome>
   <to-view-id>/pages/cadastro/cad_tipo_combustivel.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cad_veiculo_combustivel</from-outcome>
   <to-view-id>/pages/cadastro/cad_veiculo_combustivel.xhtml</to-view-id>
  </navigation-case>
  <!-- Navegação de Alteração -->
  <navigation-case>
   <from-outcome>alt_marca</from-outcome>
   <to-view-id>/pages/alterar/alt_marca.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_categoria</from-outcome>
   <to-view-id>/pages/alterar/alt_categoria.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_modelo</from-outcome>
   <to-view-id>/pages/alterar/alt_modelo.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_tipo_veiculo</from-outcome>
   <to-view-id>/pages/alterar/alt_tipo_veiculo.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_infracao</from-outcome>
   <to-view-id>/pages/alterar/alt_infracao.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_oficina</from-outcome>
   <to-view-id>/pages/alterar/alt_oficina.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_solicitacao_transporte</from-outcome>
   <to-view-id>/pages/alterar/alt_solicitacao_transporte.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_solicitacao_manutencao</from-outcome>
   <to-view-id>/pages/alterar/alt_solicitacao_manutencao.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_solicitacao_abastecimento</from-outcome>
   <to-view-id>/pages/alterar/alt_solicitacao_abastecimento.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_telefone</from-outcome>
   <to-view-id>/pages/alterar/alt_telefone.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_tipo_combustivel</from-outcome>
   <to-view-id>/pages/alterar/alt_tipo_combustivel.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_tipo_telefone</from-outcome>
   <to-view-id>/pages/alterar/alt_tipo_telefone.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>alt_veiculo_combustivel</from-outcome>
   <to-view-id>/pages/cadastro/cad_veiculo_combustivel.xhtml</to-view-id>
  </navigation-case>
  <!-- Navegação de Consultas -->
  <navigation-case>
   <from-outcome>cons_marca</from-outcome>
   <to-view-id>/pages/consulta/cons_marca.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_categoria</from-outcome>
   <to-view-id>/pages/consulta/cons_categoria.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_modelo</from-outcome>
   <to-view-id>/pages/consulta/cons_modelo.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_tipo_telefone</from-outcome>
   <to-view-id>/pages/consulta/cons_tipo_telefone.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_tipo_veiculo</from-outcome>
   <to-view-id>/pages/consulta/cons_tipo_veiculo.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_motorista</from-outcome>
   <to-view-id>/pages/consulta/cons_motorista.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_infracao</from-outcome>
   <to-view-id>/pages/consulta/cons_infracao.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_oficina</from-outcome>
   <to-view-id>/pages/consulta/cons_oficina.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_telefone</from-outcome>
   <to-view-id>/pages/consulta/cons_oficina.xhtml</to-view-id>
  </navigation-case>
  <!--<navigation-case>
   <from-outcome>cons_telefone</from-outcome>
   <to-view-id>/pages/consulta/cons_telefone.xhtml</to-view-id>
  </navigation-case>
  -->
  <navigation-case>
   <from-outcome>cons_tipo_combustivel</from-outcome>
   <to-view-id>/pages/consulta/cons_tipo_combustivel.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_veiculo</from-outcome>
   <to-view-id>/pages/consulta/cons_veiculo.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_solicitacao_transporte</from-outcome>
   <to-view-id>/pages/consulta/cons_solicitacao_transporte.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_solicitacao_abastecimento</from-outcome>
   <to-view-id>/pages/consulta/cons_solicitacao_abastecimento.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>cons_solicitacao_manutencao</from-outcome>
   <to-view-id>/pages/consulta/cons_solicitacao_manutencao.xhtml</to-view-id>
  </navigation-case>
  <!-- Navegação de Pesquisas -->
  <navigation-case>
   <from-outcome>pesq_marca</from-outcome>
   <to-view-id>/pages/pesquisa/pesq_marca.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>pesq_categoria</from-outcome>
   <to-view-id>/pages/pesquisa/pesq_categoria.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>pesq_modelo</from-outcome>
   <to-view-id>/pages/pesquisa/pesq_modelo.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>pesq_tipo_veiculo</from-outcome>
   <to-view-id>/pages/pesquisa/pesq_tipo_veiculo.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>pesq_infracao</from-outcome>
   <to-view-id>/pages/pesquisa/pesq_infracao.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <!-- Navegação de detalhamento -->
 <navigation-rule>
  <navigation-case>
   <from-outcome>detalhar_oficina</from-outcome>
   <to-view-id>/pages/detalhar/detalhar_oficina.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>detalhar_solicitacao_transporte</from-outcome>
   <to-view-id>/pages/detalhar/detalhar_solicitacao_transporte.xhtml</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>detalhar_solicitacao_manutencao</from-outcome>
   <to-view-id>/pages/detalhar/detalhar_solicitacao_manutencao.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <!-- Navegação de redirecionamento nas telas de pesquisa -->
 <navigation-rule>
  <from-view-id>/pages/pesquisa/pesq_marca.xhtml</from-view-id>
  <navigation-case>
   <from-action>#{marcaBean.pesquisar}</from-action>
   <to-view-id>/pages/consulta/cons_marca.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <from-view-id>/pages/pesquisa/pesq_categoria.xhtml</from-view-id>
  <navigation-case>
   <from-action>#{categoriaBean.pesquisar}</from-action>
   <to-view-id>/pages/consulta/cons_categoria.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <from-view-id>/pages/pesquisa/pesq_modelo.xhtml</from-view-id>
  <navigation-case>
   <from-action>#{modeloBean.pesquisar}</from-action>
   <to-view-id>/pages/consulta/cons_modelo.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <from-view-id>/pages/pesquisa/pesq_tipo_veiculo.xhtml</from-view-id>
  <navigation-case>
   <from-action>#{tipoVeiculoBean.pesquisar}</from-action>
   <to-view-id>/pages/consulta/cons_tipo_veiculo.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <from-view-id>/pages/pesquisa/pesq_infracao.xhtml</from-view-id>
  <navigation-case>
   <from-action>#{infracaoBean.pesquisar}</from-action>
   <to-view-id>/pages/consulta/cons_infracao.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <from-view-id>/pages/pesquisa/pesq_tipo_combustivel.xhtml</from-view-id>
  <navigation-case>
   <from-action>#{tipoCombustivelBean.pesquisar}</from-action>
   <to-view-id>/pages/consulta/cons_tipo_combustivel.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
  <locale-config>
   <default-locale>pt_BR</default-locale>
   <supported-locale>pt_BR</supported-locale>
  </locale-config>
  <resource-bundle>
   <base-name>br.sicf.resources.messages</base-name>
   <var>msg</var>
  </resource-bundle>
  <resource-bundle>
   <base-name>label</base-name>
   <var>lb</var>
  </resource-bundle>
 </application>

alterarInfracao.

public String alterarInfracao(){
		
		return "alt_infracao";
		
	}

Estou utilizando jsf 1.2.

robertoJames

E oq está acontecendo, é simplesmente que, ao invés dele executar a action e fizer o redirecionamento para a pagina de alt_infracao, ele da um refresh na pagina inteira. ou seja, um F5.

robertoJames

e ae pessoal,

nada ?

robertoJames

ate o momento n resolvi meu problema,

alguem teria como me ajudar ?

robertoJames

ngm ?

H

Mas o método chega a ser executado?

robertoJames

Não chega não. Quando eu debbugo, ele não passa pelo checkpoint e acaba passando direto.

Saberia me dizer o porquê ?

B

Você já verificou se os outros botões funcionam normalmente?

R

Onde tem h:column tenta trocar para rich:column

É assim que eu faço e funciona.

robertoJames

Estou passando por esse problema de novo.

aqui está meu rich:dataTable

<rich:panel>
		<rich:dataTable value="#{acaoBean.acaos}" var="set">
			<rich:column>
				<f:facet name="header">
			<h:outputText value="Setor" />
				</f:facet>
				<h:outputText value="#{set.projeto.setor.nome}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
			<h:outputText value="Progr / Proje" />
				</f:facet>
				<h:outputText value="#{set.projeto.progprojStr} : #{set.projeto.seq}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Seq" />
				</f:facet>
				<h:outputText value="#{set.seq}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Nome" />
				</f:facet>
				<h:outputText value="#{set.nome}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Início" />
				</f:facet>
				<h:outputText value="#{set.dataIniStr}"  />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Fim" />
				</f:facet>
				<h:outputText value="#{set.dataFimStr}"  />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Responsável" />
				</f:facet>
				<h:outputText value="#{set.usuario.nome}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Real.(%)" />
				</f:facet>
				<h:outputText value="#{set.realizado}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Ações" />
				</f:facet>
				
				<h:commandButton image="/recursos/imagem/visualizar.png" action="alterarAcao">
				
				<f:setPropertyActionListener value="#{set}"
						target="#{acaoBean.acao}" />
					
					<f:setPropertyActionListener value="#{progprojBean.progProj}"
						target="#{acaoBean.progProj}" />
							
				</h:commandButton>
				
				&nbsp;&nbsp;
				<h:commandLink value="Excluir" action="#{acaoBean.excluir}"
					onclick="return confirm('Deseja confirmar a exclusão?');">
					<f:setPropertyActionListener value="#{set}"
						target="#{acaoBean.acao}" />
				</h:commandLink>
			</rich:column>
		</rich:dataTable>
		</rich:panel>

Quando clico em visualizar <h:commandButton image="/recursos/imagem/visualizar.png" action=“alterarAcao”>

ao invés dele executar a action:

<navigation-case>
   <from-outcome>alterarAcao</from-outcome>
   <to-view-id>/paginas/cadastro/acao/alterar.jsp</to-view-id>
  </navigation-case>

ele da um refresh na página,

ou seja, ele atualiza a pagina atual e não redireciona para a action mencionada acima.

Alguem poderia me ajudar ?

R

Como está o seu “from-view-id” ?

robertoJames

from-view-id ?

Não tenho declarado não.

robertoJames

e um detalhe é que. fora do dataTable o action funciona, ou seja, ele redireciona, porém dentro dele não funciona. Jà tentei colcocar o t:saveState, porém continua o mesmo problema. E tentei tbm usar o f:setProperty …

porém sem exito !

R

robertoJames:
from-view-id ?

Não tenho declarado não.

Tem que ter né :wink:

robertoJames

o meu é “any”.

R
&lt;from-view-id&gt;*&lt;/from-view-id&gt;

?

robertoJames

seguinte: dentro do codigo n tem from-view-id.

Porém no diagrama, tem um bloco azul, e com descrição [any]. Mas não está declarado no código.

neno

Roberto,

o problema é que command link dentro de um datatable não funciona com o scope request, altere o scopo do manegebean que esta utilizando no commandlink para session no faces-config que deve funcionar.

Isso é claro, se essa não impactar muito em sua aplicação.
Esses é um assunto bem polêmico.

Aqui nesse artigo tem alguma outras dicas que se pode fazer…
http://www.urubatan.com.br/jsf_commandlink_datatable_problemas/

eu acredito que esse problema ja foi resolvido na versão mais atualizada do jsf, não tenho certeza.
Bom é isso.
Abrçs.

robertoJames

Bem,

por esse motivo eu tentei utilizar o t:saveState, justamente pq o scopo é Request, e com o saveState ele fica entre Request e Session.

Bem, n posso colocar como session no momento, pois vai mudar algumas coisas. Eu não sei porque mas, ao tentar utilizar o a4j:keepAlive ele da um erro muito estranho.

As duas soluções que eu mais vi pela internet foi utilizar o saveState e o keepAlive. Porem com o saveState não funciona. e o keepAlive da error.

neno

o savestate que você utilizou é de qual tag?

como vc declarou ela?

robertoJames
<%@taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>

..............................................

	<t:saveState value="#{acaoBean}"/>
				<t:saveState value="#{progprojBean }"/>
neno

roberto.,

seu manageBean implementa Serializable?

robertoJames

Aqui estao os 2.

public class AcaoBean {
	private Acao acao = new Acao();
	private List<Acao> acaos = new ArrayList<Acao>();
	private ProgProj progProj = new ProgProj();
	private AcaoService acaoService = new AcaoService();
	private ProgProjService progProjService = new ProgProjService();
	private UsuariosService usuariosService = new UsuariosService();
	
	private Metodos metodos = new Metodos();

	
	public String incluir() {
		try {
			acaoService.incluir(acao);
			acao = null;
			Mensagem.addMsgSucesso("Inclusão realizada com sucesso.");
		} catch (NegocioException e) {
			Mensagem.addMsgErro(e.getMessage());
		}
		return null;
	}

	public String alterar() {
		try {
			acaoService.alterar(acao);
			acao = null;
			Mensagem.addMsgSucesso("Alteração realizada com sucesso.");
			return "listarAcao";
		} catch (NegocioException e) {
			Mensagem.addMsgErro(e.getMessage());
			return null;
		}
	}

	public String excluir() {
		try {
			acaoService.excluir(acao);
			acao = null;
			acaos = acaoService.obterTodos();
			Mensagem.addMsgSucesso("Exclusão realizada com sucesso.");
		} catch (NegocioException e) {
			Mensagem.addMsgErro(e.getMessage());
		}
		return null;
	}
 
	public List<Acao> getAcaos() {
		
		System.out.println(this.progProj.getCodigo());
				
				//acaos = acaoService.obterTodos();
				
				try {
					acaos = acaoService.obterAcoesPorProj(this.progProj.getCodigo());
				} catch (NegocioException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
		
		return acaos;
	}

	public Acao getAcao() {
		if (acao == null) {
			acao = new Acao();
		}
		return acao;
	}

	public void setAcao(Acao acao) {
		this.acao = acao;
	}


// Projeto
	
	public Long getcodprojeto() {
			if (getAcao().getProjeto() != null) {
				return getAcao().getProjeto().getCodigo();
			}
			return 0L;
		}
	
	public void setcodprojeto(Long Codprojeto) throws NegocioException {
		ProgProj progProj = progProjService.obterPorCodigo(Codprojeto);
		getAcao().setProjeto(progProj);
	}
	

	public List<SelectItem> getprojetos() throws NegocioException {
		List<SelectItem> itens = new ArrayList<SelectItem>();

		itens.add(new SelectItem(0L, "Selecione"));
		for (ProgProj progProj : progProjService.obterTodos()) {
			itens.add(new SelectItem(progProj.getCodigo(), metodos.retornaStr( progProj.getSetor().getNome()+" - "+ progProj.getProgprojStr()+" - "+	 progProj.getSeq()+" - "+progProj.getNome(), 150)));
		}

		return itens;
	}

	
// Usuário 
	
	public Long getcodusuario() {
			if (getAcao().getUsuario() != null) {
				return getAcao().getUsuario().getCodigo();
			}
			return 0L;
		}
	
	public void setcodusuario(Long Codusuario) throws NegocioException {
		Usuarios usuarios = usuariosService.obterPorCodigo(Codusuario);
		getAcao().setUsuario(usuarios);
	}
	

	public List<SelectItem> getusuarios() throws NegocioException {
		List<SelectItem> itens = new ArrayList<SelectItem>();

		itens.add(new SelectItem(0L, "Selecione"));
		for (Usuarios usuarios : usuariosService.obterTodos()) {
			itens.add(new SelectItem(usuarios.getCodigo(), usuarios.getNome()));
		}

		return itens;
	}

	public void setProgProj(ProgProj progProj) {
		this.progProj = progProj;
	}

	public ProgProj getProgProj() {
		return progProj;
	}
public class ProgProjBean {
	private ProgProj progProj = new ProgProj();
	private List<ProgProj> progProjs;
	private List<ProgProj> listaProjAgua = new ArrayList<ProgProj>();
	private List<ProgProj> listaProjEsgoto = new ArrayList<ProgProj>();
	private List<ProgProj> listaProjDrenagem = new ArrayList<ProgProj>();
	private List<ProgProj> listaProjResiduos = new ArrayList<ProgProj>();
	private ProgProjDAO progDao = new ProgProjDAO();
	private ProgProjService progProjService = new ProgProjService();
	private SetorService setorService = new SetorService();

	private UsuariosService usuariosService = new UsuariosService();
	

	 UsuariosBean usuarioMBean = (UsuariosBean) FacesContextComum
		.getSessionAttribute("usuariosBean");
	
	
	public String incluir() {
		try {
			progProjService.incluir(progProj);
			progProj = null;
			Mensagem.addMsgSucesso("Inclusão realizada com sucesso.");
		} catch (NegocioException e) {
			Mensagem.addMsgErro(e.getMessage());
		}
		return null;
	}

	public String alterar() {
		try {
			progProjService.alterar(progProj);
			progProj = null;
			Mensagem.addMsgSucesso("Alteração realizada com sucesso.");
			return "listarProgProj";
		} catch (NegocioException e) {
			Mensagem.addMsgErro(e.getMessage());
			return null;
		}
	}

	public String excluir() {
		try {
			progProjService.excluir(progProj);
			progProj = null;
			progProjs = progProjService.obterTodos();
			Mensagem.addMsgSucesso("Exclusão realizada com sucesso.");
		} catch (NegocioException e) {
			Mensagem.addMsgErro(e.getMessage());
		}
		return null;
	}
 
	
	
	public List<ProgProj> getProgProjs() {
		try {
			if (progProjs == null) {
				progProjs = progProjService.obterTodos();
			}
		} catch (NegocioException e) {
			Mensagem.addMsgErro(e.getMessage());
		}
		return progProjs;
	}
	
	
	public List<ProgProj> getProgProjsPorMunicipio(){
		
		
		try {
			if (progProjs == null) {
				progProjs = progProjService.obterProgsPorMunicipio(usuarioMBean.getMunicipio().getCodigo());
			}
		} catch (NegocioException e) {
			Mensagem.addMsgErro(e.getMessage());
		}
		return progProjs;
	}

	public ProgProj getProgProj() {
		if (progProj == null) {
			progProj = new ProgProj();
		}
		return progProj;
	}

	public void setProgProj(ProgProj progProj) {
		this.progProj = progProj;
	}

// Relatórios
	
	public String gerarRelatorioResumo() {
		
		Relatorio.carregarRelatorio("/relatorios/ResumoProg.jasper", false);
		return null;
	}	
	
	
// Setor 
	
	public Long getcodigosetor() {
			if (getProgProj().getSetor() != null) {
				return getProgProj().getSetor().getCodigo();
			}
			return 0L;
		}
	
	public void setcodigosetor(Long Codigosetor) throws NegocioException {
		Setor setor = setorService.obterPorCodigo(Codigosetor);
		getProgProj().setSetor(setor);
	}
	

	public List<SelectItem> getsetores() throws NegocioException {
		List<SelectItem> itens = new ArrayList<SelectItem>();

		itens.add(new SelectItem(0L, "Selecione"));
		for (Setor setor : setorService.obterTodos()) {
			itens.add(new SelectItem(setor.getCodigo(), setor.getNome()));
		}

		return itens;
	}

	
// ProjPai 
	
	public Long getcodprojpai() {
			if (getProgProj().getProjpai() != null) {
				return getProgProj().getProjpai().getCodigo();
			}
			return 0L;
		}
	
	public void setcodprojpai(Long Codprojpai) throws NegocioException {
		ProgProj progProj = progProjService.obterPorCodigo(Codprojpai);
		getProgProj().setProjpai(progProj);
	}
	

	public List<SelectItem> getprojpais() throws NegocioException {
		List<SelectItem> itens = new ArrayList<SelectItem>();

		itens.add(new SelectItem(0L, "Selecione"));
		for (ProgProj progProj : progProjService.obterTodos()) {
			itens.add(new SelectItem(progProj.getCodigo(), progProj.getNome()));
		}

		return itens;
	}

	
// Usuário 
	
	public Long getcodusuario() {
			if (getProgProj().getUsuario()!= null) {
				return getProgProj().getUsuario().getCodigo();
			}
			return 0L;
		}
	
	public void setcodusuario(Long Codusuario) throws NegocioException {
		Usuarios usuarios = usuariosService.obterPorCodigo(Codusuario);
		getProgProj().setUsuario(usuarios);
	}
	

	public List<SelectItem> getusuarios() throws NegocioException {
		List<SelectItem> itens = new ArrayList<SelectItem>();

		itens.add(new SelectItem(0L, "Selecione"));
		for (Usuarios usuarios : usuariosService.obterTodos()) {
			itens.add(new SelectItem(usuarios.getCodigo(), usuarios.getNome()));
		}

		return itens;
	}

	public void setListaProjAgua(List<ProgProj> listaProjAgua) {
		this.listaProjAgua = listaProjAgua;
	}

	public List<ProgProj> getListaProjAgua() {
		
		setListaProjAgua(progDao.listarProjAgua(usuarioMBean.getMunicipio().getCodigo()));
		
		/*int resto = listaProjAgua.size()%5;
			
		if (resto != 0){
			
			Integer qntoFalta = 5 - resto;
			
			
			for (int i=0;i<qntoFalta;i++){
				
				listaProjAgua.add(new ProgProj());
				
			}
			*/
			
		
			
	
		
		return listaProjAgua;
	}

	public void setListaProjEsgoto(List<ProgProj> listaProjEsgoto) {
		this.listaProjEsgoto = listaProjEsgoto;
	}

	public List<ProgProj> getListaProjEsgoto() {
		
		setListaProjEsgoto(progDao.listarProjEsgoto(usuarioMBean.getMunicipio().getCodigo()));
		
		return listaProjEsgoto;
	}

	public void setListaProjDrenagem(List<ProgProj> listaProjDrenagem) {
		this.listaProjDrenagem = listaProjDrenagem;
	}

	public List<ProgProj> getListaProjDrenagem() {
		
		setListaProjDrenagem(progDao.listarProjDrenagem(usuarioMBean.getMunicipio().getCodigo()));
		
		return listaProjDrenagem;
	}

	public void setListaProjResiduos(List<ProgProj> listaProjResiduos) {
		this.listaProjResiduos = listaProjResiduos;
	}

	public List<ProgProj> getListaProjResiduos() {
		
		setListaProjResiduos(progDao.listarProjResiduos(usuarioMBean.getMunicipio().getCodigo()));
		
		return listaProjResiduos;
	}

Bem, eu pensava que apenas entidades deveriam implementar serializable.

ae estão eles.

V

Coloca a tag h:messages no inicio do seu form, dai caso ocorra algum erro na validação ou conversão de algum componentes a mensagem será adicionada no componente.

robertoJames

Coloquei o h:messages … e nada de funcionar, ou melhor,

nada de mostrar error.

neno

roberto, no caso como vc esta guardando o estado do managed bean inteiro

<t:saveState value="#{acaoBean}"/>

Seu manage bean deve implementar Serializable sim, a fim de vc conseguir resgatar seus atributos.

o mesmo se aplica pro a4j:keepAlive, que no caso guarda o proprio menagedBean de qualquer jeito, precisa estar serializado.

robertoJames

Continua sem funcionar.

robertoJames

ngm ?

R

robertoJames:
Estou passando por esse problema de novo.

aqui está meu rich:dataTable

<rich:panel>
		<rich:dataTable value="#{acaoBean.acaos}" var="set">
			<rich:column>
				<f:facet name="header">
			<h:outputText value="Setor" />
				</f:facet>
				<h:outputText value="#{set.projeto.setor.nome}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
			<h:outputText value="Progr / Proje" />
				</f:facet>
				<h:outputText value="#{set.projeto.progprojStr} : #{set.projeto.seq}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Seq" />
				</f:facet>
				<h:outputText value="#{set.seq}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Nome" />
				</f:facet>
				<h:outputText value="#{set.nome}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Início" />
				</f:facet>
				<h:outputText value="#{set.dataIniStr}"  />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Fim" />
				</f:facet>
				<h:outputText value="#{set.dataFimStr}"  />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Responsável" />
				</f:facet>
				<h:outputText value="#{set.usuario.nome}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Real.(%)" />
				</f:facet>
				<h:outputText value="#{set.realizado}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Ações" />
				</f:facet>
				
				<h:commandButton image="/recursos/imagem/visualizar.png" action="alterarAcao">
				
				<f:setPropertyActionListener value="#{set}"
						target="#{acaoBean.acao}" />
					
					<f:setPropertyActionListener value="#{progprojBean.progProj}"
						target="#{acaoBean.progProj}" />
							
				</h:commandButton>
				
				&nbsp;&nbsp;
				<h:commandLink value="Excluir" action="#{acaoBean.excluir}"
					onclick="return confirm('Deseja confirmar a exclusão?');">
					<f:setPropertyActionListener value="#{set}"
						target="#{acaoBean.acao}" />
				</h:commandLink>
			</rich:column>
		</rich:dataTable>
		</rich:panel>

Quando clico em visualizar <h:commandButton image="/recursos/imagem/visualizar.png" action=“alterarAcao”>

ao invés dele executar a action:

<navigation-case>
   <from-outcome>alterarAcao</from-outcome>
   <to-view-id>/paginas/cadastro/acao/alterar.jsp</to-view-id>
  </navigation-case>

ele da um refresh na página,

ou seja, ele atualiza a pagina atual e não redireciona para a action mencionada acima.

Alguem poderia me ajudar ?

vc colocou a tag <h:form> ???

robertoJames
<f:view>
	<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<a4j:loadStyle src="/recursos/css/estilo.css"></a4j:loadStyle>
	<title>PMSB</title>
	</head>
	<body>
	<h:form>
		<h:messages />
		
				
		PAINEL DE ACOES
		
		<h:commandButton image="/recursos/imagem/visualizar.png" action="alterarAcao" />
				
		
		<rich:dataTable value="#{acaoBean.acaos}" var="set" 
		style="cursor:pointer;"
		onRowMouseOver="this.style.backgroundColor='#CEF9FD'"
		onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'">
		
			<rich:column>
				<f:facet name="header">
			<h:outputText value="Setor" />
				</f:facet>
				<h:outputText value="#{set.projeto.setor.nome}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
			<h:outputText value="Progr / Proje" />
				</f:facet>
				<h:outputText value="#{set.projeto.progprojStr} : #{set.projeto.seq}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Seq" />
				</f:facet>
				<h:outputText value="#{set.seq}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Nome" />
				</f:facet>
				<h:outputText value="#{set.nome}" />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Início" />
				</f:facet>
				<h:outputText value="#{set.dataIniStr}"  />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Fim" />
				</f:facet>
				<h:outputText value="#{set.dataFimStr}"  />
			</rich:column>
			<rich:column>
				<f:facet name="header">
					<h:outputText value="Responsável" />
				</f:facet>
				<h:outputText value="#{set.usuario.nome}" />
			</rich:column>
			<rich:column>
			
			
			
				<f:facet name="header">
					<h:outputText value="Real.(%)" />
				</f:facet>
				<h:outputText value="#{set.realizado}" />
			</rich:column>
			<rich:column>
			
				<t:saveState value="#{acaoBean}"/>
				<t:saveState value="#{progprojBean}"/>
			
				<f:facet name="header">
					<h:outputText value="Ações" />
				</f:facet>
				
				<h:commandButton image="/recursos/imagem/visualizar.png" action="alterarAcao" />
				
			
				&nbsp;&nbsp;
				<h:commandLink value="Excluir" action="#{acaoBean.excluir}"
					onclick="return confirm('Deseja confirmar a exclusão?');">
					<f:setPropertyActionListener value="#{set}"
						target="#{acaoBean.acao}" />
				</h:commandLink>
			</rich:column>
		</rich:dataTable>
		
		
		
		
		<rich:spacer height="20" />
		<h:commandButton value="Nova Ação"
			action="incluirAcao" />
		<rich:spacer width="10" />
		<h:commandButton value="Voltar" action="PMSB" />
		
	</h:form>
	</body>
	</html>
</f:view>
henrriquetec

ola,

poderia postar os código novamente (todos)? pode ser que alterou o código.

Abraços Luiz

robertoJames

continuo com o mesmo problema.

alguem poderia me dar alguma luz. ???

Criado 4 de novembro de 2010
Ultima resposta 21 de nov. de 2010
Respostas 33
Participantes 8