JSF - Holen Sie sich die SessionScoped Bean-Instanz
Habe ich diese Konfiguration auf meinem web-Anwendung. 2 Bohnen :
1° Bohne - Er überprüft die login;
@ManagedBean(name="login")
@SessionScoped
public class Login {
private String nickname;
private String password;
private boolean isLogged;
public String getNickname() { return nickname; }
public void setNickname(String newValue) { nickname=newValue; }
public String getPassword() { return password; }
public void setPassword(String newValue) { password=newValue; }
public void checkLogin() {
... i check on db the nickname and the password ...
if(USER EXIST) {
isLogged=true;
} else {
isLogged=false;
}
return true;
}
}
2° - Bean - Verwaltung der Benutzer-parameter :
@ManagedBean(name="user")
@SessionScoped
public class User {
private String name;
private String surname;
private String mail;
public User() {
String[] record=null;
Database mydb=Configuration.getDatabase();
mydb.connetti();
ArrayList<String[]> db_result=null;
db_result=mydb.selectQuery("SELECT name, surname, mail, domicilio FROM users WHERE nickname='???????'");
int i = 0;
while (i<db_result.size() ) {
record=(String[]) db_result.get(i);
i++;
}
}
... getter and setter methods...
}
Wie Sie sehen können, würde ich gerne wissen, wie Sie den Spitznamen gesetzt, die zuvor auf meinem login
bean, also kann ich die Abfrage für meine DB.
In der Tat, ich brauche, um die Instanz von der aktuellen session-bean-login : wie kann ich es bekommen? Ich verwenden soll somethings wie session.getBean("login")
🙂
Hoffe, diese Frage ist klar 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
@ManagedProperty
, um es zu injizieren und verwenden@PostConstruct
Zugang nach bean ' s construction (weil in einem normalen Konstruktor wäre es nochnull
).Sagte, dies ist nicht der richtige Ansatz. Sie würden gerne tun es in die andere Richtung. Injizieren
User
imLogin
durch@ManagedProperty(value="#{user}")
und den job tun, während der submit-Aktion-Methode.Würden Sie auch gerne das Passwort in
WHERE
- Klausel. Es gibt absolut keine Notwendigkeit zu schleppen die gesamte Benutzer-Tabelle in Java-Speicher und bestimmen Sie, eins nach dem anderen. Lass einfach die DB den job tun, und überprüfen, ob es null oder eine Zeile.Login
Bohne in der bean-Konstruktor. Es wäre nochnull
an diesem Punkt. By the way, der name der Methode muss nicht unbedingt seininit()
können Sie wählen, was Sie mögen, solange es eine@PostConstruct
auf Sie.Just let the DB do the job and check if it returns zero or one row.
aber ich muss speichern Sie diese Daten abrufen, die Sie in derprofile.xhtml
(view-context). Selbstverständlich kann ein Benutzer Zugriff auf diese Seite nur aus, wenn isLogged wahr ist. das bedeutet, dass ich sehen kann, nur mein eigenes Profil 🙂checkLogin
action-Methode, nicht inUser
Konstruktor. Würd ich auch umbenennen, dieLogin
zuUserManager
hat eineUser
Eigentum und umbenennencheckLogin()
zulogin()
. Trotzdem, Sie Mai finden diesem Artikel nützlich.Auch versuchen, mit dem folgenden code: