Hallo zusammen,
Ich arbeite im Moment gerade an einer Register Seite mit JSF und scheine es einfach nicht hinzukriegen.
Ich bekomme nun folgende Exception
Mein RegisterBean ist ein ManagedBean mit ViewScope, sowie es auch mein RegisterBackingBean ist.
Wäre es jemandem möglich mir zu erklären was ich bei folgendem Code falsch gemacht habe:
register.xhtml
RegisterBean
RegisterBackingBean
Falls ihr noch das Web.xml und/oder Faces-config.xml benötigt schreibt es, wollte nicht alles mit code voll schreiben :bahnhof:
Ich arbeite im Moment gerade an einer Register Seite mit JSF und scheine es einfach nicht hinzukriegen.
Ich bekomme nun folgende Exception
Code:
javax.servlet.ServletException: Verwalteter Bean registerBean kann nicht erstellt werden. Die folgenden Probleme wurden gefunden:
- Eigenschaft registerBackingBean für verwalteten Bean "registerBean ist nicht vorhanden.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
Mein RegisterBean ist ein ManagedBean mit ViewScope, sowie es auch mein RegisterBackingBean ist.
Wäre es jemandem möglich mir zu erklären was ich bei folgendem Code falsch gemacht habe:
register.xhtml
HTML:
<!--
This is the register screen. Welcome to Noten Verwalter.
-->
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Registrierung für Notenverwalter</title>
</h:head>
<h:form>
<h:panelGrid>
<h:outputLabel for="LoginName" value="#{msgs.accountname}" />
<h:panelGroup>
<h:inputText id="LoginName" value="#{registerBean.userName}"
required="true" size="15"
binding="#{registerBackingBean.register}" />
<h:message for="LoginName"
errorClass="msgError" warnClass="msgWarning"
fatalClass="msgFatal" infoClass="msgInfo"/>
</h:panelGroup>
<h:outputLabel for="Password" value="#{msgs.password}" />
<h:panelGroup>
<h:inputSecret id="Password" value="#{registerBean.password}"
required="true" size="15" />
<h:message for="Password"
errorClass="message msgError" warnClass="msgWarning"
fatalClass="msgFatal" infoClass="msgInfo"/>
</h:panelGroup>
<h:outputLabel for="repeatPassword" value="#{msgs.repeatPassword}" />
<h:panelGroup>
<h:inputSecret id="repeatPassword" value="#{registerBean.repeatPassword}"
required="true" size="15"
validator="#{registerBackingBean.validateUser}" />
<h:message for="repeatPassword"
errorClass="message msgError" warnClass="msgWarning"
fatalClass="msgFatal" infoClass="msgInfo"/>
</h:panelGroup>
<h:outputLabel for="Vorname" value="#{msgs.vorname}" />
<h:panelGroup>
<h:inputText id="Vorname" value="#{registerBean.vorname}"
required="true" size="15" />
<h:message for="Vorname"
errorClass="message msgError" warnClass="msgWarning"
fatalClass="msgFatal" infoClass="msgInfo"/>
</h:panelGroup>
<h:outputLabel for="Nachname" value="#{msgs.nachname}" />
<h:panelGroup>
<h:inputText id="Nachname" value="#{registerBean.nachname}"
required="true" size="15" />
<h:message for="Nachname"
errorClass="message msgError" warnClass="msgWarning"
fatalClass="msgFatal" infoClass="msgInfo"/>
</h:panelGroup>
<h:outputLabel for="Klasse" value="#{msgs.klasse}" />
<h:panelGroup>
<h:selectOneRadio id="Klasse" value="#{registerBean.klasse}" required="true">
<f:selectItem itemValue="1" itemLabel="5IA09" />
<f:selectItem itemValue="2" itemLabel="5IS09" />
</h:selectOneRadio>
</h:panelGroup>
</h:panelGrid>
<h:commandButton id="registerButton" type="submit" value="#{msgs.registerb}" title="Register" action="#{registerBean.register}" />
<h:commandButton value="#{msgs.cancel}" type="reset"/>
</h:form>
</html>
RegisterBean
Java:
package beans;
import java.sql.SQLException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.naming.NamingException;
@ManagedBean
@ViewScoped
public class RegisterBean {
public String userName;
public String vorname;
public String nachname;
public String password;
public String repeatPassword;
public String klasse;
@ManagedProperty(value="#{registerBackingBean}")
private RegisterBackingBean registerBackingBean;
public void setLoginBackingBean(RegisterBackingBean registerBackingBean) {
this.registerBackingBean = registerBackingBean;
}
public RegisterBean() {}
public void register() throws SQLException, NamingException {
boolean isValidPw = validatePassword();
if(isValidPw) {
int role_fk = 1;
//String sql = "insert into user values ("+ Integer.valueOf(klasse)+ ", 1, "+ userName +", "+ password +", "+ nachname +", "+ vorname +");";
String sql = "INSERT INTO user "
+ "(klasse_fk, role_fk, username, password, name, vorname) "
+ "VALUES "
+ "('" + Integer.valueOf(klasse) + "',"
+ "('" + role_fk + "',"
+ "('" + userName + "',"
+ "('" + password + "',"
+ "('" + nachname + "',"
+ "('" + vorname + "')";
try {
dataBaseBeans.DatabaseManager.getDatebaseManager().sendInsert(sql);
System.out.println("Erfolgreich Inserted");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
public boolean validatePassword() {
boolean isValid = false;
if((password.equals(repeatPassword) && password !=null)) {
isValid = true;
}
return isValid;
}
public String getUserName() {
return this.registerBackingBean.getUserName();
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getNachname() {
return nachname;
}
public void setNachname(String nachname) {
this.nachname = nachname;
}
public String getVorname() {
return vorname;
}
public void setVorname(String vorname) {
this.vorname = vorname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRepeatPassword() {
return repeatPassword;
}
public void setRepeatPassword(String repeatPassword) {
this.repeatPassword = repeatPassword;
}
public String getKlasse() {
return klasse;
}
public void setKlasse(String klasse) {
this.klasse = klasse;
}
}
RegisterBackingBean
Java:
// **** JSF Notenverwalter RegisterBackingBean **** //
package beans;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.naming.NamingException;
@ManagedBean
@ViewScoped
public class RegisterBackingBean {
public RegisterBackingBean(){}
private UIInput register;
private String userName;
private String vorname;
private String nachname;
// Validator_Methode: Überprüft ob in DB User mit diesem Passwort existiert
public void validateUser(FacesContext context, UIComponent component, Object value) throws SQLException, NamingException {
userName = (String) register.getLocalValue();
try {
String sql = "SELECT username FROM user WHERE username = '" + userName + "'";
// String sql = "SELECT name, vorname FROM user WHERE username = '" + userName + "' AND password = '" + value.toString() + "'";
ResultSet rs = dataBaseBeans.DatabaseManager.getDatebaseManager().sendQuery(sql);
if (!rs.next()) {
System.out.println("User existiert NICHT");
}
else {
FacesMessage message = new FacesMessage("User existiert schon!");
context.addMessage(component.getClientId(context),message);
message.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(message);
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
// Methode setzt die loginID welche zur Validation gebraucht wird. Wird an "userid" aus login.xhtml gebunden
public void setRegister(UIInput register) {
this.register = register;
}
public UIInput getRegister() {
return register;
}
public String getUserName(){
return this.userName;
}
public String getNachname() {
return nachname;
}
public String getVorname() {
return vorname;
}
}
Falls ihr noch das Web.xml und/oder Faces-config.xml benötigt schreibt es, wollte nicht alles mit code voll schreiben :bahnhof:
Zuletzt bearbeitet: