Olá pessoal,
Estou desenvolvendo um projeto novo em JSF e sou novato na tecnologia.
Estou desenvolvendo em JSF 2.1.4 com Primefaces 3.4 + Spring Security.
Tenho uma listagem de usuários bem simples abaixo:
<!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:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui"
>
<h:head>
<title>Sistema XXX</title>
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
<link href="#{request.contextPath}/css/login.css" rel="stylesheet" type="text/css" />
<link href="#{request.contextPath}/css/Default.css" rel="stylesheet" type="text/css" />
</h:head>
<h:body>
<ui:composition template="MainTemplate.xhtml">
<ui:define name="conteudo">
<h2>Usuários</h2>
<h:form id="lstUsuarios" style="overflow:none;">
<p:dataTable id="dgListadoUsuarios" scrollHeight="300" var="item" bgcolor="#FFFFFF" border="1" cellpadding="5" cellspacing="3" first="0" width="100%" rows="10"
frame="box" rules="all" selection="#{flash.usuarioSelecionado}" selectionMode="single" value="#{listagemUsuariosBean.usuarioDataModel}" paginator="true" rowKey="#{item.id}"
>
<p:column width="150">
<f:facet name="header">
<div align="left">
<h:outputText value="Usuário" />
</div>
</f:facet>
<h:outputText value="#{item.id}"></h:outputText>
</p:column>
<p:column style="width: 100%;">
<f:facet name="header">
<div align="left">
<h:outputText value="Nome Completo" />
</div>
</f:facet>
<h:outputText value="#{item.nomeCompleto}"></h:outputText>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Ativo" />
</f:facet>
<center>
<h:selectBooleanCheckbox disabled="true" style="" value="#{item.enable}"></h:selectBooleanCheckbox>
</center>
</p:column>
<f:facet name="footer">
</f:facet>
</p:dataTable>
<table width="100%" style="margin-top: 10px;">
<tr>
<td>
<h:commandButton style="width:75px;" value="Incluir" action="#{listagemUsuariosBean.editarUsuario()}" styleClass="btn" />
</td>
<td>
<h:commandButton style="width:75px;" immediate="true" value="Alterar" action="#{listagemUsuariosBean.editarUsuario()}" styleClass="btn" />
</td>
<td>
<h:commandButton style="width:75px;" value="Excluir" styleClass="btn" />
</td>
<td width="100%">
</td>
</tr>
</table>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
O managed Bean listagemUsuariosBean está aqui:
package br.com.alltrade.ebuy.bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import br.com.alltrade.ebuy.datamodel.UsuarioDataModel;
import br.com.alltrade.ebuy.dataservice.UsuarioDataService;
import br.com.alltrade.ebuy.entity.EUsuario;
import com.sun.faces.context.flash.ELFlash;
@ManagedBean(name="listagemUsuariosBean")
@RequestScoped
public class ListagemUsuariosBean {
private EUsuario usuarioSelecionado;
public EUsuario getUsuarioSelecionado() {
return usuarioSelecionado;
}
public void setUsuarioSelecionado(EUsuario usuarioSelecionado) {
this.usuarioSelecionado = usuarioSelecionado;
}
public UsuarioDataModel getUsuarioDataModel() {
UsuarioDataService oUsuarioDataService = new UsuarioDataService();
UsuarioDataModel dataModel = new UsuarioDataModel(oUsuarioDataService.search(EUsuario.class));
return dataModel;
}
public String editarUsuario(){
ELFlash.getFlash().put("usuarioSelecionado", usuarioSelecionado);
return "EdicaoUsuario";
}
public String incluirUsuario(){
return "EdicaoUsuario";
}
}
No meu faces-config, já configurei de diversas formas.
Assim:
<navigation-rule>
<from-view-id>/ListagemUsuarios.xhtml</from-view-id>
<navigation-case>
<from-action>#{listagemUsuariosBean.editarUsuario()}</from-action>
<to-view-id>/EdicaoUsuario.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
e também já tentei assim:
<navigation-rule>
<from-view-id>/ListagemUsuarios.xhtml</from-view-id>
<navigation-case>
<from-outcome>EdicaoUsuario</from-outcome>
<to-view-id>/EdicaoUsuario.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
Mas nenhum dos meus h:CommandButton’s executa nenhuma ação/navegação!
Já levantei problemas parecidos na web, dentro deles:
-Os botôes devem estar dentro de um form: OK, eles estão.
-A navegação deve estar definida no faces-config: OK, ela está.
Parece que está faltando compreender algum conceito ou algum detalhe.
O estranho é que o grid do primefaces mapeado acima dos botões funciona normalmente.
Alguma idéia?
Agradeço qualquer atenção.
