javax.servlet.ServletException javax.el.PropertyNotFoundException:

Я пытаюсь настроить этот пример, но каждый раз, когда я хочу нажать на кнопку, которая создает новую запись в моей таблице, возникает эта ошибка.


Тип отчета об исключении

messageInternal Server Error

description Сервер обнаружил внутреннюю ошибку, которая не позволила ему выполнить этот запрос.

исключение

javax.servlet.ServletException: javax.el.PropertyNotFoundException: /anzeige-comedians.xhtml @38,128 action="#{comedianHandler.neuanlage}": цель недостижима, идентификатор 'comedianHandler' разрешен, чтобы устранить нулевую причину

javax.faces.el.EvaluationException: javax.el.PropertyNotFoundException: /anzeige-comedians.xhtml @38,128 action="#{comedianHandler.neuanlage}": цель недостижима, идентификатор 'comedianHandler' разрешен до нулевой основной причины

javax.el.PropertyNotFoundException: /anzeige-comedians.xhtml @ 38,128 action = "# {comedianHandler.neuanlage}": цель недостижима, идентификатор 'comedianHandler' разрешен в ноль

комиков

<!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">

<head>
    <title>Anzeige Comedians</title>
    <link rel="stylesheet" href="style.css" type="text/css" />
</head>

<body>
    <h:form>
        <h:dataTable value="#{comedianHandler.comedians}" var="comedian"
                rowClasses="odd,even" headerClass="header" footerClass="footer">
            <f:facet name="header">Anzeige aller Comedians</f:facet>
            <f:facet name="footer">#{resourceBundle.copyright}</f:facet>
            <h:column>
                <f:facet name="header">Vorname</f:facet>
                #{comedian.vorname}
            </h:column>
            <h:column>
                <f:facet name="header">Nachname</f:facet>
                #{comedian.nachname}
            </h:column>
            <h:column>
                <f:facet name="header">Geburtstag</f:facet>
                <h:outputText value="#{comedian.geburtstag}">
                    <f:convertDateTime pattern="dd.MM.yyyy"/>
                </h:outputText>
            </h:column>
            <h:column>
                <h:commandButton action="#{comedianHandler.aendern}" value="Ändern" />
            </h:column>
            <h:column>
                <h:commandButton action="#{comedianHandler.loeschen}" value="Löschen" />
            </h:column>
        </h:dataTable>
        <h:commandButton action="#{comedianHandler.neuanlage}" value="Neuanlage" style="width: 80px; margin: 10px 2px 2px 2px;" />
    </h:form>
</body>

</html>

управляемый боб

/**
 *  Einfache Managed-Bean zur Verwaltung von Comedians
 */
@ManagedBean
@SessionScoped
public class ComedianHandler implements Serializable {

    @PersistenceContext
    private EntityManager em;

    @Resource
    private UserTransaction utx;

    private DataModel<Comedian> comedians;
    private Comedian aktuellerComedian = new Comedian();


    public ComedianHandler() {
        Logger.getAnonymousLogger().log(Level.INFO, "Konstruktor ComedianHandler() aufgerufen");    
    }

    public String speichern() {
        Logger.getAnonymousLogger().log(Level.INFO, "speichern() [1] mit " + aktuellerComedian +  "' aufgerufen");
        try {
            utx.begin();
            aktuellerComedian = em.merge(aktuellerComedian);
            Logger.getAnonymousLogger().log(Level.INFO, "speichern() [2] mit " + aktuellerComedian+  "' aufgerufen");
            em.persist(aktuellerComedian);
            comedians.setWrappedData(em.createNamedQuery("SelectComedians").getResultList());
            utx.commit();
        } catch (Exception e) {
            Logger.getAnonymousLogger().log(Level.SEVERE, "'speichern()' nicht geklappt", e.getMessage());
        }
        return "/anzeige-comedians.xhtml";
    }

    public String aendern() {
        aktuellerComedian = comedians.getRowData();
        Logger.getAnonymousLogger().log(Level.INFO, "aendern() mit " + aktuellerComedian);
        return "/comedian.xhtml";
    }

    public String neuanlage() {
        aktuellerComedian = new Comedian();
        Logger.getAnonymousLogger().log(Level.INFO, "neuanlage()");
        return "/comedian.xhtml";
    }

    public String loeschen() {
        aktuellerComedian = comedians.getRowData();
        Logger.getAnonymousLogger().log(Level.INFO, "loeschen() mit " + aktuellerComedian);
        try {
            utx.begin();
            aktuellerComedian = em.merge(aktuellerComedian);
            em.remove(aktuellerComedian);
            comedians.setWrappedData(em.createNamedQuery("SelectComedians").getResultList());
            utx.commit();
        } catch (Exception e) {
            Logger.getAnonymousLogger().log(Level.SEVERE, "'loeschen()' nicht geklappt", e.getMessage());
        }
        return null;
    }

    /*
     * Bekannter Fehler: Methode wird pro Session aufgerufen, d.h. Daten werden
     * für JEDE Session in die DB geschrieben.
     * Mögliche Abhilfe: In MB mit Application-Scope auslagern.
     */
    @PostConstruct
    public void init() {
        Logger.getAnonymousLogger().log(Level.INFO, "'init()' aufgerufen");
        try {
            utx.begin();
            em.persist(new Comedian("Mario", "Barth", new GregorianCalendar(1972, 10, 1).getTime()));
            em.persist(new Comedian("Atze", "Schröder", new GregorianCalendar(1965, 8, 27).getTime()));
            em.persist(new Comedian("Dieter", "Nuhr", new GregorianCalendar(1960, 9, 29).getTime()));
            em.persist(new Comedian("Anke", "Engelke", new GregorianCalendar(1965, 11, 21).getTime()));
            em.persist(new Comedian("Kaya", "Yanar", new GregorianCalendar(1973, 4, 20).getTime()));
            comedians = new ListDataModel<Comedian>();
            comedians.setWrappedData(em.createNamedQuery("SelectComedians").getResultList());
            utx.commit();           
        } catch (Exception e) {
            Logger.getAnonymousLogger().log(Level.SEVERE, "'init()' nicht geklappt", e.getMessage());
        }
    }

    public DataModel<Comedian> getComedians() {
        return comedians;
    }

    public Comedian getAktuellerComedian() {
        return aktuellerComedian;
    }

    public void setAktuellerComedian(Comedian aktuellerComedian) {
        this.aktuellerComedian = aktuellerComedian;
    }

}

0 ответов

Другие вопросы по тегам