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!
Manda seu backbean para darmos uma olhada!
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;
}
}
Não vi nada errado, mas posta também o faces-config…
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”);
}
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>
Se puder dar um help via msn ai eu agradeceria muito.
meu msn é marcelohonsa@hotmail.com
Valeu.
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…
Não tenho msn no trabalho, infelizmente…
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…
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…
Vc precisa passar pelo método?
tenta dessa maneira:
<h:commandLink value=“Editar” action=“sucessoEditar”/>
Marcelo
fiz exatamento como vc está desenvolvendo e funcionou direito. Pode ser alguma instabilidade de ambiente…
Vou continuar procurando algo!
Que estranho em…
Será que pode ser problema de escopo do objeto NUsuario??
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!
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…