Nach dem Umschalten von @ManagedBean auf @Named: javax.el.PropertyNotFoundException: Target Unreachable, Bezeichner 'person' in null aufgelöst [duplicate]
Diese Frage hat hier bereits eine Antwort:
Javax.el.PropertyNotFoundException identifizieren und lösen: Ziel nicht erreichbar 12 answers Ich teste gerade diese JSF-Seite aus, also setze ich nicht dasaction
Attribut im<h:commandButton/>
. Dies ist ein sehr einfaches Formular mit 3 Eingabefeldern für Vorname, Nachname und E-Mail und einer Schaltfläche namens Speichern. Jedes Mal, wenn ich auf diese Schaltfläche klicke, erhalte ich die Fehlermeldung
javax.el.PropertyNotFoundException: /index.xhtml @19,106 value="#{person.firstName}": Target Unreachable, identifier 'person' resolved to null
aber wenn ich mein JavaBean @ annotie@ManagedBean
, dann geht das Formular einwandfrei durch, aber jedes Mal, wenn ich wieder auf @ umstei@Named
Bean, ich bekomme den Fehler nochmal. Ich habe einige der Vorschläge ausprobiert, die ich auf dieser Site gefunden habe, z. B. den Server neu zu starten, das Vorhandensein der Getter zu überprüfen, aber diese haben nicht geholfen.
<?xml version='1.0' encoding='UTF-8' ?>
<!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">
<h:head>
<meta charset="UTF-8" />
<title>Simple Form Created Using Facelets</title>
</h:head>
<h:body>
<h:messages/>
<h:form>
<h:panelGrid columns="2" columnClasses="rightColumn, leftColumn">
<h:outputLabel for="firstName" value="First Name:" />
<h:inputText id="firstName" value="#{person.firstName}"
label="First Name"/>
<h:outputLabel for="lastName" value="Last Name:" />
<h:inputText id="lastName" value="#{person.lastName}" label="Last Name"/>
<h:outputLabel for="email" value="Email:"/>
<h:inputText id="email" value="#{person.email}" label="Email" />
<h:panelGroup />
<h:commandButton value="Submit"/>
</h:panelGrid>
</h:form>
</h:body>
</html>
Das ist meine JavaBean Klasse
import javax.annotation.PostConstruct;
import javax.faces.bean.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class Person {
private String firstName = "empty";
private String lastName = "empty";
private String email = "empty";
public void Person() {}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Dies ist dasweb.xml
Datei
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>