2 Stimmen

ManagedBean-Eigenschaft nicht gefunden

Wenn ich in meiner Webanwendung auf den Anmeldelink klicke, löst der Tomcat-Webserver die folgende Ausnahme aus:

exception
javax.servlet.ServletException: /aluno_jsf.xhtml: Property 'logout' not found on type
br.com.aluno.controller.LoginMB

javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)

root cause
javax.el.ELException: /aluno_jsf.xhtml: Property 'logout' not found on type
br.com.aluno.controller.LoginMB
[...]

Hier ist meine @ManagedBean:

package br.com.aluno.controller;

import java.io.Serializable;
import java.util.Collection;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import br.com.aluno.dao.DaoFactory;
import br.com.aluno.entity.Usuario;
import br.com.aluno.util.JsfUtil;

@ManagedBean
public class LoginMB implements Serializable {
private static final long serialVersionUID = 6667329439219329074L;

private Usuario usuario;

@PostConstruct
public void init() {
    usuario = new Usuario();
}

public void logar() {
    try {
        Collection<Usuario> usuarios = DaoFactory
                .getDAOFactory(DaoFactory.JPA).getUsuarioDao()
                .validarLogin(usuario);
        if (usuarios != null && usuarios.size() == 1) {

            usuario = usuarios.iterator().next();

            HttpSession session = (HttpSession) FacesContext
                    .getCurrentInstance().getExternalContext()
                    .getSession(true);
            if (session != null) {
                session.setAttribute("usuario", usuario);
                session.setAttribute("usuarioTipo", usuario.getClass()
                        .getName());
            }
        } else {
            JsfUtil.addErrorMessage("Login ou senha invalida",
                    "Login ou senha invalida");
        }
    } catch (Exception e) {
        JsfUtil.addFatalMessage("Entre em contato com o administrador",
                e.getMessage());
    }
}

public String logout() {
    HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
            .getExternalContext().getSession(false);
    if (session != null) {
        session.invalidate();
    }
    return "/login?faces-redirect=true";
}

public Usuario getUsuario() {
    return usuario;
}

public void setUsuario(Usuario usuario) {
    this.usuario = usuario;
}
}

Ich habe einen Link in einer index.html, der auf die folgende login.xhtml weiterleitet:

<ui:decorate 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" template="/aluno_jsf.xhtml">

<ui:define name="conteudo">
    <h:form rendered="#{sessionScope.usuario == null}">
        <h3>Login</h3>
        <p:messages id="messages" showDetail="true" autoUpdate="true" />
        <h:panelGrid columns="2">
            <p:outputLabel for="login" value="Login:" />
            <p:inputText id="login" value="#{loginMB.usuario.login}" required="true" 
requiredMessage="Digite um login" />
            <p:outputLabel for="senha" value="Senha:" />
            <p:password id="senha" value="#{loginMB.usuario.senha}" required="true" 
requiredMessage="Digite uma senha" />
            <p:commandButton action="#{loginMB.logar}" value="Logar" ajax="false" />
        </h:panelGrid>
    </h:form>
</ui:define>

Nach der Validierung sollten die folgenden Seiten gerendert werden:

<!DOCTYPE html>
<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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>aluno_jsf</title>
</h:head>
<h:body>
<f:view>
    <h:form>
        <p:menubar
            rendered="#{sessionScope.usuarioTipo == 'br.com.aluno.entity.Administrador'}">
            <p:menuitem url="/administrador/cadastroCurso.xhtml"
value="Cadastro de curso" />
            <p:menuitem url="/administrador/cadastroDisciplina.xhtml" 
value="Cadastro de disciplinas" />
            <p:menuitem url="/administrador/cadastroAluno.xhtml" 
value="Cadastro de alunos" />
            <p:menuitem url="/administrador/atribuiNota.xhtml" 
value="Atribuicao de notas para alunos" />
            <p:menuitem action="#{loginMB.logout}" value="Logout" />
        </p:menubar>
        <p:menubar
rendered="#{sessionScope.usuarioTipo == 'br.com.aluno.entity.Aluno'}">
            <p:menuitem url="/aluno/nota.xhtml" value="Consulta de notas" />
            <p:menuitem url="/aluno/senha.xhtml" value="Alteracao de senha" />
            <p:menuitem action="#{loginMB.logout}" value="Logout" />
        </p:menubar>
    </h:form>
    <ui:insert name="conteudo">
    conteudo
    </ui:insert>
</f:view>
</h:body>
</html>

Da ich diese Webanwendung anpasse - und ich habe bereits einige Fehlkonfigurationen vor - weiß jemand, was jetzt passiert?

Vielen Dank im Voraus.

Wie Sie gefragt haben, ist sie die neue Ausnahme:

message Could not initialize class br.com.fiap.aluno.util.JpaUtil

description The server encountered an internal error (Could not initialize class     br.com.fiap.aluno.util.JpaUtil) that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Could not initialize class br.com.fiap.aluno.util.JpaUtil
javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)

root cause

java.lang.NoClassDefFoundError: Could not initialize class br.com.fiap.aluno.util.JpaUtil
br.com.fiap.aluno.dao_jpa.JpaUsuarioDao.validarLogin(JpaUsuarioDao.java:46)
br.com.fiap.aluno.controller.LoginMB.logar(LoginMB.java:30)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
javax.el.BeanELResolver.invoke(BeanELResolver.java:484)
javax.el.CompositeELResolver.invoke(CompositeELResolver.java:161)
org.apache.el.parser.AstValue.getValue(AstValue.java:159)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:214)
com.sun.faces.facelets.compiler.AttributeInstruction.write(AttributeInstruction.java:89)
com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:302)
com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
  com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.29 logs.

Ich werde versuchen, das Problem zu beheben, aber ich wäre Ihnen dankbar, wenn Sie mir ein paar Tipps geben könnten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X