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:
<?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: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>
<ui:insert name="bodyForm"/>
</h:form>
</f:view>
00 - Template head:
<table width="60%" border="0" cellpadding="0" cellspacing="10">
<tr>
<td class="linkLogout"><b>Usuario:</b> <h:outputText value="#{PrincipalApp.jaasCtlAcsUsr.jaasUsrNom}"/></td>
<td width="60" align="right"><b><a >• Ajuda?</a></b></td>
<td width="60" align="right"><b><h:commandLink action="#{PrincipalApp.autenticacaoEfetuarLogout}"
id="btEfetuarLogout"
binding="#{PrincipalApp.btEfetuarLogout}"
class="linkLogout"><h:outputText value="• Logout"/></h:commandLink></b></td>
</tr>
</table>
01 - Tela login:
<ui:composition template="/jsp/template/template.xhtml">
<ui:define name="bodyForm">
<table width="250" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td class="textFormClass">Usuário:</td>
<td>
<h:inputText size="15" id="jaasUsrNom" value="#{PrincipalApp.jaasCtlAcsUsr.jaasUsrNom}" class="inputClass"/>
</td>
</tr>
<tr>
<td class="textFormClass">Senha:</td>
<td>
<h:inputSecret redisplay="false" size="10" id="jaasUsrSnh" value="#{PrincipalApp.jaasCtlAcsUsr.jaasUsrSnh}" class="inputClass"/>
</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>
<h:commandLink id="autenticacaoEfetuarLogout" action="#{PrincipalApp.autenticacaoEfetuarLogout}">
<h:graphicImage border="0" url="/images/br_forms/bt_cancelar.gif"/>
</h:commandLink>
</td>
<td align="right">
<h:commandLink id="autenticacaoEfetuarLogin" action="#{PrincipalApp.autenticacaoEfetuarLogin}">
<h:graphicImage border="0" url="/images/br_forms/bt_login.gif"/>
</h:commandLink>
</td>
</tr>
</table>
</ui:define>
</ui:composition>
02 - Tela perfil:
<ui:composition template="/jsp/template/template.xhtml">
<ui:define name="bodyForm">
<table width="250" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td>
<h:commandLink actionListener="#{PrincipalApp.autenticacaoVoltarTelaLogin}"
rendered="true"
id="autenticacaoVoltarTelaLogin"
binding="#{PrincipalApp.btVoltarTelaLogin}">
<h:graphicImage url="/images/br_forms/bt_voltar.gif" border="0"/>
</h:commandLink>
</td>
<td align="right">
<h:commandLink actionListener="#{PrincipalApp.autenticacaoTelaInicial}"
rendered="true"
id="autenticacaoTelaInicial"
binding="#{PrincipalApp.btAvancarTelaLogin}">
<h:graphicImage url="/images/br_forms/bt_entrar.gif" border="0"/>
</h:commandLink>
</td>
</tr>
</table>
</ui:define>
</ui:composition>
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