Problema com commandLink em JSF

Tenho uma aplicação que roda com JSF+Facelets.

Em certos formulários tenho os commandButton/commandLink, quando tenho executar um ação do bean o mesmo é ignorado.

public abstract class SimpleItemBean implements java.io.Serializable {

	private HtmlCommandLink btCommandInclusao;
	
	
	private HtmlCommandLink btCommandAlteracao;
	
	
	private HtmlCommandLink btCommandCancelamento;
	

	.... oculto get/set
}
public class PrincipalApp extends SimpleItemBean{

	private JaasCtlAcsUsr jaasCtlAcsUsr;
	
	private HtmlCommandLink btEfetuarLogout;
	
	private HtmlCommandLink btVoltarTelaLogin;
	
	private HtmlCommandLink btAvancarTelaLogin;

	public String autenticacaoVoltarTelaLogin(){
		
		getHttpSession(true).invalidate();
		
		return "ctlacs_deslogarUsuario";
	}


	public String autenticacaoEfetuarLogout(){
		getHttpSession(true).invalidate();
		
		return "ctlacs_deslogarUsuario";
	}

	public String autenticacaoTelaInicial(){
		return "ctlacs_telaInicial";
	}
	
	...... oculto get/set
}

Template geral:

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

<f:view>
	<h:form>
		<ui:include src="/jsp/template/head.jsp"/>
		<br>
		&lt;ui:insert name="bodyForm"/&gt;
	&lt;/h:form&gt;
&lt;/f:view&gt;

00 - Template head:

&lt;table width="60%" border="0" cellpadding="0" cellspacing="10"&gt;
		&lt;tr&gt; 
		  &lt;td class="linkLogout"&gt;<b>Usuario:</b> &lt;h:outputText value="#{PrincipalApp.jaasCtlAcsUsr.jaasUsrNom}"/&gt;&lt;/td&gt;
		  &lt;td width="60" align="right"&gt;<b><a  >&#8226; Ajuda?</a></b>&lt;/td&gt;
		  &lt;td width="60" align="right"&gt;<b>&lt;h:commandLink 	action="#{PrincipalApp.autenticacaoEfetuarLogout}"
															id="btEfetuarLogout"
															binding="#{PrincipalApp.btEfetuarLogout}"
															class="linkLogout"&gt;&lt;h:outputText value="&#8226; Logout"/&gt;&lt;/h:commandLink&gt;</b>&lt;/td&gt;
		&lt;/tr&gt;

&lt;/table&gt;

01 - Tela login:

&lt;ui:composition template="/jsp/template/template.xhtml"&gt;
	&lt;ui:define name="bodyForm"&gt;
	&lt;table width="250" border="0" cellspacing="0" cellpadding="0" align="center"&gt;
		&lt;tr&gt; 
			&lt;td class="textFormClass"&gt;Usuário:&lt;/td&gt;
			&lt;td&gt;
				&lt;h:inputText size="15" id="jaasUsrNom" value="#{PrincipalApp.jaasCtlAcsUsr.jaasUsrNom}" class="inputClass"/&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt; 
			&lt;td class="textFormClass"&gt;Senha:&lt;/td&gt;
			&lt;td&gt;
				&lt;h:inputSecret redisplay="false" size="10" id="jaasUsrSnh" value="#{PrincipalApp.jaasCtlAcsUsr.jaasUsrSnh}" class="inputClass"/&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt; 
			&lt;td&gt;&nbsp;&lt;/td&gt;
			&lt;td&gt;&nbsp;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;h:commandLink id="autenticacaoEfetuarLogout" action="#{PrincipalApp.autenticacaoEfetuarLogout}"&gt;
				&lt;h:graphicImage border="0" url="/images/br_forms/bt_cancelar.gif"/&gt;
				&lt;/h:commandLink&gt;
			&lt;/td&gt;
			&lt;td align="right"&gt;
				&lt;h:commandLink  id="autenticacaoEfetuarLogin" action="#{PrincipalApp.autenticacaoEfetuarLogin}"&gt;
				&lt;h:graphicImage border="0" url="/images/br_forms/bt_login.gif"/&gt; 
				&lt;/h:commandLink&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
	&lt;/ui:define&gt;
&lt;/ui:composition&gt;
02 - Tela perfil:
&lt;ui:composition template="/jsp/template/template.xhtml"&gt;
	&lt;ui:define name="bodyForm"&gt;
		&lt;table width="250" border="0" cellspacing="0" cellpadding="0" align="center"&gt;
			  &lt;tr&gt;
				&lt;td&gt;
					&lt;h:commandLink 	actionListener="#{PrincipalApp.autenticacaoVoltarTelaLogin}"
									rendered="true"
									id="autenticacaoVoltarTelaLogin"
									binding="#{PrincipalApp.btVoltarTelaLogin}"&gt;
						&lt;h:graphicImage url="/images/br_forms/bt_voltar.gif" border="0"/&gt;
					&lt;/h:commandLink&gt;
				&lt;/td&gt;
				&lt;td align="right"&gt;
					&lt;h:commandLink 	actionListener="#{PrincipalApp.autenticacaoTelaInicial}"
									rendered="true"
									id="autenticacaoTelaInicial"
									binding="#{PrincipalApp.btAvancarTelaLogin}"&gt;
						&lt;h:graphicImage url="/images/br_forms/bt_entrar.gif" border="0"/&gt; 
					&lt;/h:commandLink&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
	&lt;/ui:define&gt;
&lt;/ui:composition&gt;

A execução dos commandLinks em “01 - Tela login:” é executada com sucesso:
PrincipalApp.autenticacaoEfetuarLogout - ok
PrincipalApp.autenticacaoEfetuarLogin - ok

Quando a redireção é executada para “02 - Tela perfil:” apenas o commandLink “PrincipalApp.autenticacaoEfetuarLogout” é executado. Se encontra no include de “00 - Template head:”
Os commandLinks “PrincipalApp.autenticacaoVoltarTelaLogin” e “PrincipalApp.autenticacaoTelaInicial” são ignorados, apenas é executado um refresh na tela.

“O mesmo acontece quando altero os commandLinks para commandButton”

Já aconteceu isso com alguém? Ou alguém sabe como resolver este problema?

Fico muito agradecido se alguém puder me ajudar. Att. Alan

Olá

Deve ter algum objeto q está nulo quando o jsf vai processalo. Verifique se vc está incializando todos os objetos que vc utiliza em seu formulário.
Com certeza seu servidor jee deve estar emitindo alguma exception do JSF no console tb… isso pode te ajudar a chegar a solução. :slight_smile:

t+

Então cara, todos os objetos são iniciados, até minha entidade “jaasCtlAcsUsr” que é iniciada no construtor de PrincipalApp.

Infelismente, quando executo o click do commandLink apenas é executado um refresh na tela.

Já verifiquei o log do console, e nada é executado. Se pelo menos retornasse algum tipo de erro ficaria mais fácil.

Obrigado,

Alan

Eu também já tive alguns problemas com commandLinks utilizando Facelets. Dá uma olhada se nao tem uma versao mais atual do jar que voce esta utilizando.