Problema com commandLink

16 respostas
marcelohonsa

Pessoal, tenho a página abaixo e estou com um problema.
Quando clico no commandLink, o método relacionado ao action do mesmo não é executado, ou seja, ele não reconhece ação nenhuma no command link.
Alguem sabe o que pode ser?

<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h” %>

Sistema de Treinamento
<h:dataTable value="#{negocioUsuario.listaUsuarios}" var="user" border="1">

			<h:column>
				<f:facet name="header">
					<h:outputText value="Nome"/>
				</f:facet>
				<h:outputText value="#{user.nome}"/>					
			</h:column>

			<h:column>
				<f:facet name="header">
					<h:outputText value="Matrícula"/>
				</f:facet>
				<h:outputText value="#{user.matricula}"/>					
			</h:column>
			
			<h:column>
				<f:facet name="header">
					<h:outputText value="Nível"/>
				</f:facet>
				<h:outputText value="#{user.nivel}"/>					
			</h:column>
			
			<h:column>
				<f:facet name="header">
					<h:outputText value="Status"/>
				</f:facet>
				<h:outputText value="#{user.status}"/>					
			</h:column>
			
			<h:column>
				<f:facet name="header">
					<h:outputText value="Editar"/>
				</f:facet>
				<h:commandLink value="Editar" action="#{negocioUsuario.editUsuario}"/>
			</h:column>
			
			<h:column>
				<f:facet name="header">
					<h:outputText value="Excluir"/>
				</f:facet>
				<h:commandLink value="Excluir" action="#{negocioUsuario.delUsuario}"/>
			</h:column>																				
		</h:dataTable>	
	</h:form>
</f:view>
	<table width="450" align="left">
		<tr>
			<td width="450" align="left">
				<a href="sucessoLogin.jsf">Clique aqui para Voltar</a>
			</td>
		</tr>			
	</table>	
</body>

Desde já agradeço!

16 Respostas

I

Manda seu backbean para darmos uma olhada!

marcelohonsa

Aqui está meu Bean

package br.com.login.usuarios;

import java.util.List;

public class NUsuarios {

private Usuarios usuario = new Usuarios();

private String chaveConsulta = null;

private List listaUsuarios = null;
public String setUsuario() {
	PUsuarios persistencia = new PUsuarios(); 
	boolean result = persistencia.setUsuario(this.usuario);
	if (result)
		return "sucesso";
	else
		return "falha";

}

public String getUsuarios() {
	PUsuarios persistencia = new PUsuarios();
	this.listaUsuarios = persistencia.getUsuarios(this.chaveConsulta);
	if (this.listaUsuarios.size() > 0)
		return "sucesso";
	else
		return "falha";

}

public String editUsuario() {
	System.out.println("Aqui no Editar");
	return "sucessoEditar";

}	

public String delUsuario() {
	System.out.println("Aqui no Deletar");
	return "sucessoDeletar";

}

public Usuarios getUsuario() {
	return usuario;
}

public void setUsuario(Usuarios usuario) {
	this.usuario = usuario;
}
  	
public String getChaveConsulta() {
	return chaveConsulta;
}

public void setChaveConsulta(String chaveConsulta) {
	this.chaveConsulta = chaveConsulta;
}	

public List getListaUsuarios() {
	return listaUsuarios;
}

public void setListaUsuarios(List<Usuarios> listaUsuarios) {
	this.listaUsuarios = listaUsuarios;
}

}

I

Não vi nada errado, mas posta também o faces-config…

I

Meu exemplo:
JSF
<h:commandLink id=“commandLink1” action="#{teste3.commandLink1Action}" title=“title” >
<h:outputText value=“text” />
</h:commandLink>
<h:messages id=“messages1” errorClass=“errorMessages” fatalClass=“fatalMessages” globalOnly=“true” infoClass=“infoMessages” warnClass=“warnMessages” />

BackBean

public void commandLink1Action() {

addMessage(“Teste”);

}
marcelohonsa

Tá ai o faces-config
Seguinte, quando clico no link, ele executa na mesma página saca… não executa o método…

<?xml version="1.0"?>
<!-- REGRAS DE NAVEGAÇÃO -->	
<navigation-rule>
	<from-view-id>/login.jsp</from-view-id>
		<navigation-case>
			<from-outcome>sucesso</from-outcome>
			<to-view-id>/sucessoLogin.jsp</to-view-id>
		</navigation-case>			
		<navigation-case>
			<from-outcome>falha</from-outcome>
			<to-view-id>/falhaLogin.jsp</to-view-id>
		</navigation-case>						
</navigation-rule>


<navigation-rule>
	<from-view-id>/adicionarDados.jsp</from-view-id>
		<navigation-case>
			<from-outcome>sucesso</from-outcome>
			<to-view-id>/sucessoInsercao.jsp</to-view-id>
		</navigation-case>			
		<navigation-case>
			<from-outcome>falha</from-outcome>
			<to-view-id>/falhaInsercao.jsp</to-view-id>
		</navigation-case>						
</navigation-rule>


<navigation-rule>
	<from-view-id>/gerenciarUsuario.jsp</from-view-id>
		<navigation-case>
			<from-outcome>sucesso</from-outcome>
			<to-view-id>/usuariosLocalizados.jsp</to-view-id>
		</navigation-case>			
		<navigation-case>
			<from-outcome>falha</from-outcome>
			<to-view-id>/nenhumRegistro.jsp</to-view-id>
		</navigation-case>				
</navigation-rule>



<navigation-rule>

	<from-view-id>/dadosLocalizados.jsp</from-view-id>
	
		<navigation-case>			
			<from-outcome>sucessoEditar</from-outcome>
			<to-view-id>/sucessoLogin.jsp</to-view-id>
		</navigation-case>			
		
		<navigation-case>
			<from-outcome>falhaEditar</from-outcome>
			<to-view-id>/falhaLogin.jsp</to-view-id>
		</navigation-case>			
		
		<navigation-case>
			<from-outcome>sucessoDeletar</from-outcome>
			<to-view-id>/sucessoLogin.jsp</to-view-id>
		</navigation-case>			
		
		<navigation-case>
			<from-outcome>falhaDeletar</from-outcome>
			<to-view-id>/falhaLogin.jsp</to-view-id>
		</navigation-case>			
								
</navigation-rule>



<!-- BEANS DOS OBJETOS -->	
<managed-bean>
	<managed-bean-name>login</managed-bean-name>
	<managed-bean-class>br.com.login.Login</managed-bean-class>
	<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<managed-bean>
	<managed-bean-name>usuario</managed-bean-name>
	<managed-bean-class>br.com.login.usuarios.Usuarios</managed-bean-class>
	<managed-bean-scope>request</managed-bean-scope>		
</managed-bean>

<!-- BEANS DE NEGÓCIO -->		

<managed-bean>
	<managed-bean-name>autenticacao</managed-bean-name>
	<managed-bean-class>br.com.login.AutenticacaoUsuario</managed-bean-class>
	<managed-bean-scope>session</managed-bean-scope>
</managed-bean>	


<managed-bean>
	<managed-bean-name>negocioUsuario</managed-bean-name>
	<managed-bean-class>br.com.login.usuarios.NUsuarios</managed-bean-class>
	<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
marcelohonsa

Se puder dar um help via msn ai eu agradeceria muito.
meu msn é [email removido]
Valeu.

I

O comportamento esperado é que ele execute o método do backbean. No seu método só existe um System.out.println, ou seja, não existe nenhuma ação para outra página. Acho que está certo…

I

Não tenho msn no trabalho, infelizmente…

I

Com o addMessage vc pode colocar um componente Messages na sua página e verificar se ele está executando a página…me diz se funciona…

marcelohonsa

Pois é, eu coloquei o System.out.println la pra ver se estava pelo menos executando o método… mas não está, pq não aparece no console o resultado do System.out.println… Ta muito esquisito mesmo… Se vc reparar no faces-config.xml, tem a regra de navegação para o retorno do método que é pra ser executado, direcionando pra outra página… mas isso não está acontecendo…

I

Vc precisa passar pelo método?

tenta dessa maneira:

<h:commandLink value=“Editar” action=“sucessoEditar”/>

I

Marcelo

fiz exatamento como vc está desenvolvendo e funcionou direito. Pode ser alguma instabilidade de ambiente…
Vou continuar procurando algo!

marcelohonsa

Que estranho em…
Será que pode ser problema de escopo do objeto NUsuario??

marcelohonsa

Fiz funcionar… Mas acho que não está do jeito certo, mudei o escopo do Bean…

De :

negocioUsuario
br.com.login.usuarios.NUsuarios
request

Para :

negocioUsuario br.com.login.usuarios.NUsuarios
session

Se alguem souber outra forma de solucionar… eu agradeço!!!
Valeu!

marcelohonsa

Será que alguem em idéia do porque de não funcionar com a scope request?
Estou querendo ajeitar o lance como request mas não está funcionando…

I

Marcelo
Pesquei esse post aqui no fórum…

http://www.guj.com.br/posts/list/48636.java

Criado 25 de janeiro de 2007
Ultima resposta 30 de jan. de 2007
Respostas 16
Participantes 2