Estou trabalhando na autenticação do Usuario, esse é meu código da AutenticacoaBean. Quando eu clico no botão entrar da minha tela de autenticação, ocorre o seguinte erro:
package br.com.horasExtras.bean;
import java.io.IOException;
import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import org.omnifaces.util.Faces;
import org.omnifaces.util.Messages;
import br.com.horasExtras.dao.FuncionariosDAO;
import br.com.horasExtras.domain.Funcionarios;
@ManagedBean
@SessionScoped
public class AutenticacaoBean {
private Funcionarios funcionario;
public Funcionarios getFuncionario() {
return funcionario;
}
public void setFuncionario(Funcionarios funcionario) {
this.funcionario = funcionario;
}
@PostConstruct
public void iniciar() {
funcionario = new Funcionarios();
}
public void autenticar() {
try {
FuncionariosDAO funcionariosDAO = new FuncionariosDAO();
Funcionarios funcionariosLogado =
funcionariosDAO.autenticar(funcionario.getMatricula(),funcionario.getSenha());
if (funcionariosLogado == null){
Messages.addGlobalError("Matricula ou Senha inválida");
return;
}
Faces.redirect("./templates/Modelo.xhtml");
} catch (IOException erro) {
erro.printStackTrace();
Messages.addGlobalError(erro.getMessage());
}
}
}
Java.
Compartilhar
E o que este botão invoca na controller? Vc não postou o erro por completo, mas observe Could not resolve property: funcionario of: br.com.horasExtras.domain.Funcionarios acredito que vc esteja usando esta property na sua xhtml e ela nao existe nesta List. Se ñ for, nos dê mais detalhes do ambiente(Classes, xhtml …)
essa e minha Class Funcionarios:
package br.com.horasExtras.domain;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import br.com.horasExtras.domain.GenericDomain;
@SuppressWarnings(“serial”)
@Entity
public class Funcionarios extends GenericDomain {
@Column(length=100,nullable=false)
private String nmfuncionario;
@Column(nullable=false)
private BigDecimal salario;
@Column(length=10,nullable=false)
private String matricula;
@Column(length=15,nullable=false)
private String lotacao;
@Column(length=1,nullable=false)
private String tipo;
@Column(length=20,nullable=false)
private String senha;
public String getNmfuncionario() {
return nmfuncionario;
}
public void setNmfuncionario(String nmfuncionario) {
this.nmfuncionario = nmfuncionario;
}
public BigDecimal getSalario() {
return salario;
}
public void setSalario(BigDecimal salario) {
this.salario = salario;
}
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public String getLotacao() {
return lotacao;
}
public void setLotacao(String lotacao) {
this.lotacao = lotacao;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
}
essa e minha page Funcionarios.xhtml:
<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p=“http://primefaces.org/ui"
xmlns:ui=“http://xmlns.jcp.org/jsf/facelets"
template=”/templates/Modelo.xhtml”>
<ui:define name="conteudo">
<h:form id="formListagem">
<p:panel header="Funcionários - Listagem">
<p:dataTable id="tabela" emptyMessage="Nenhum registro encontrado."
paginator="true" value="#{funcionariosBean.funcionarios}" var="funcionarios" rows="10"
paginatorPosition="top">
<f:facet name="header">
<p:commandButton value="Novo" oncomplete="PF('dialogo').show();"
actionListener="#{funcionariosBean.novo}" update=":formCadastro:painel" />
<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide();"/>
</f:facet>
<p:column headerText="Nome" sortBy="#{funcionarios.nmfuncionario}"
filterBy="#{funcionarios.nmfuncionario}">
<h:outputText value="#{funcionarios.nmfuncionario}" />
</p:column>
<p:column headerText="Matricula" sortBy="#{funcionarios.matricula}"
filterBy="#{funcionarios.matricula}">
<h:outputText value="#{funcionarios.matricula}" />
</p:column>
<p:column headerText="Lotação" sortBy="#{funcionarios.lotacao}"
filterBy="#{funcionarios.lotacao}">
<h:outputText value="#{funcionarios.lotacao}" />
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-trash" actionListener="#{funcionariosBean.excluir}"
update=":mensagem :formListagem:tabela">
<p:confirm header="Confirmação" message="Deseja excluir o funcionário?"
icon="ui-icon-alert" />
<f:attribute name="funcionarioSelecionado" value="#{funcionarios}"/>
</p:commandButton>
<p:commandButton icon="ui-icon-pencil" actionListener="#{funcionariosBean.editar}"
update=":formCadastro:painel" oncomplete="PF('dialogo').show();">
<f:attribute name="funcionarioSelecionado" value="#{funcionarios}"/>
</p:commandButton>
</p:column>
</p:dataTable>
<p:confirmDialog global="true">
<p:commandButton value="Sim" type="button"
styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="Não" type="button"
styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:panel>
</h:form>
<p:dialog header="Funcionários - Cadastro" widgetVar="dialogo"
draggable="false" resizable="false" modal="true" closable="false">
<h:form id="formCadastro">
<h:panelGrid id="painel" columns="2">
<p:outputLabel value="Nome:" />
<p:inputText maxlength="100" size="100"
value="#{funcionariosBean.funcionario.nmfuncionario}"
required="true" requiredMessage="O campo 'Nome' é obrigatório"/>
<p:outputLabel value="Matricula:" />
<p:inputText maxlength="10" size="10"
value="#{funcionariosBean.funcionario.matricula}"
required="true" requiredMessage="O campo 'Matricula' é obrigatório"/>
<p:outputLabel value="Lotação:" />
<p:inputText maxlength="10" size="10"
value="#{funcionariosBean.funcionario.lotacao}"
required="true" requiredMessage="O campo 'Lotação' é obrigatório"/>
<p:outputLabel value="Salário:" />
<p:inputText maxlength="10" size="10"
value="#{funcionariosBean.funcionario.salario}" required="true"
requiredMessage="O campo 'Salário' é obrigatório"
converterMessage="Informe um valor válido para o campo 'Salário''"
validatorMessage="Informe um valor entre 0,01 e 99999,99 para o campo 'Salário'">
<f:validateDoubleRange minimum="0.01" maximum="99999.99" />
<f:convertNumber locale="pt_BR" minFractionDigits="2" />
</p:inputText>
<p:outputLabel for="senha" value="Senha:" />
<p:password id="senha" maxlength="20" size="20" redisplay="true"
value="#{funcionariosBean.funcionario.senha}"
required="true" requiredMessage="O campo 'Senha' é obrigatório"/>
<p:outputLabel for="tipo" value="Tipo:" />
<p:selectOneRadio id="tipo" value="#{funcionariosBean.funcionario.tipo}"
required="true" requiredMessage="O campo 'Tipo' ´obrigatório">
<f:selectItem itemValue="A" itemLabel="Administrador" />
<f:selectItem itemValue="U" itemLabel="Usuário" />
</p:selectOneRadio>
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton value="Salvar"
actionListener="#{funcionariosBean.salvar}"
update=":mensagem :formCadastro:painel :formListagem:tabela" />
<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide();" />
</h:panelGrid>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>
Este xhtml não corresponde ao da autenticação. Vc tinha falado que o problema ocorre na autenticação [quote=“Luis_Rabelo2004, post:1, topic:341517”]
Faces.redirect("./templates/Modelo.xhtml");
[/quote]
Creio que seja este xhtml que esteja com problema … mas posta os xhtml que seram chamados ao clicar no botao que dar o erro. E posta a exception por completo por gentileza.
este é o xhtml da pagina Modelo.xhtml;
<?xml version="1.0" encoding="UTF-8" ?>
<h:head>
Horas Extras
<h:outputStylesheet library=“css” name=“estilo.css” />
</h:head>
<h:body>
<p:growl id=“mensagem” />
<div id="geral">
<div id="topo" class="divTopo">
</div>
<div id="cabecalho" class="divCabecalho">
<h:form id="formMenu">
<p:menubar>
<p:submenu label="Cadastros" icon="ui-icon-document">
<p:menuitem value="Funcionários" url="/pages/Funcionarios.xhtml" />
<p:menuitem value="Feriado" url="/pages/Feriado.xhtml" />
<p:separator />
<p:menuitem value="Sair" url="#" />
</p:submenu>
<p:submenu label="Horas Extras" url="/pages/Horas.xhtml" icon="ui-icon-pencil"/>
<p:menuitem value="Sair" url="http://www.primefaces.org" icon="ui-icon-close" />
</p:menubar>
</h:form>
</div>
<div id="conteudo">
<ui:insert name="conteudo" />
</div>
</div>
</h:body>