2016-04-03 12 views
0

im auf einem Login JSF arbeiten und Hibernate-Anwendung, habe ich ein Problem, whan ich auf nichts Login-Button passiertLogin JSF Hibernate-Login-Button doesn t beantworten

<h:head></h:head> 
<body> 
<h:form> 
<h:outputText value="#{accountController.message}" escape="false">  </h:outputText> 
    </h:form> 
    <h:panelGrid columns ="2" cellpadding="2" cellpacing="2"> 

     <h:outputText value="Username"></h:outputText> 
    < h:inputText value="#{utilisateursController.utilisateurs.username}"> </h:inputText> 

    <h:outputText value="Password"></h:outputText> 
    <h:inputSecret value="#{utilisateursController.utilisateurs.password}"></h:inputSecret> 

<h:commandButton value = "login" action="#{utilisateursController.login()}" ></h:commandButton> 

UtilisateursController.java

package controller; 

import javax.faces.bean.*; 
import entities.*; 
import model.UtilisateursModel; 

    import java.util.*; 

@ManagedBean(name="UtilisateursController") 
@SessionScoped 
    public class UtilisateursController { 

    private UtilisateursModel utilisateursModel = new UtilisateursModel(); 
    private Utilisateurs utilisateurs = new Utilisateurs(); 
    private String message = ""; 



    public String getMessage() { 
    return message; 
} 
    public void setMessage(String message) { 
    this.message = message; 
    } 
    public Utilisateurs getUtilisateurs() { 
    return utilisateurs; 
    } 
     public void setUtilisateurs(Utilisateurs utilisateurs) { 
     this.utilisateurs = utilisateurs; 
    } 

     public String login(){ 
     if(utilisateursModel.login(this.utilisateurs.getUsername(), 
      this.utilisateurs.getPassword())!=null){ 

     return "welcome"; 
     } else { 
     this.message = "Utilisateur invalid"; 
     this.utilisateurs = new Utilisateurs(); 
     return "login"; 
     } 
      } 
      } 

BenutzerMo del.java

package model; 

     import org.hibernate.Query; 
    import org.hibernate.resource.transaction.spi.TransactionStatus; 

    import entities.*; 

    public class UtilisateursModel extends AbstractModel<Utilisateurs>{ 

    public UtilisateursModel(){ 
     super(Utilisateurs.class); 
     } 


     public Utilisateurs login(String username, String password){ 
      try{ 

     if (!(sessionFactory.getCurrentSession().getTransaction().getStatus() != TransactionStatus.ACTIVE)) 
     sessionFactory.getCurrentSession().getTransaction().begin(); 


      Query query = sessionFactory 
       .getCurrentSession() 
       .createQuery(
      "from utilisateurs where username=:username and  password=:password"); 
      query.setString("username", username); 
      query.setString("password", password); 
      return (Utilisateurs)query.uniqueResult(); 
      } catch(Exception e){ 
      return null; 
     } 

     } 
    } 

danken Ihnen für Ihre Hilfe, ich don t wirklich etwas falsch auf dem Code sehen

+0

Setzen Sie Ihren commandButton in '' .action wird ausgelöst, wenn die Schaltfläche im Formular-Tag. –

+0

Willkommen bei Stack Overflow! Bevor Sie eine zukünftige Frage zu JSF stellen, vergewissern Sie sich bitte, dass Sie http://stackoverflow.com/tags/jsf/info gelesen haben. Die aktuelle Frage in ihrer aktuellen Form enthält eine Menge irrelevanten Code, der nicht zum wirklichen Problem beiträgt. Versuchen Sie, daran zu arbeiten. – BalusC

Antwort

-1

Sie können nicht eine Aktion auszuführen, wenn die Befehlsschaltfläche außerhalb eines Formulars ist. Ändern Sie Ihren Code auf die folgenden:

<h:form> 
<h:outputText value="#{accountController.message}" escape="false">  </h:outputText> 
<h:panelGrid columns ="2" cellpadding="2" cellpacing="2"> 
    <h:outputText value="Username"></h:outputText> 
    <h:inputText value="#{utilisateursController.utilisateurs.username}"/> 
    <h:outputText value="Password"/> 
    <h:inputSecret value="#{utilisateursController.utilisateurs.password}"/> 
    <h:commandButton value = "login" action="#{utilisateursController.login()}" /> 
</h:panelGrid> 
</h:form> 

Hoffnung das funktioniert für Sie heraus!

-1

Sie benötigen einen Code zu ändern, wie pro folgende

  1. Sie müssen alle Element in Form Körper setzen, wie alle Eingänge und Submit-Button
  2. Sie benötigen ändern bean Namen utilisateursController verwalten statt UtilisateursController

I bedeutet

@ManagedBean(name="utilisateursController") instead of @ManagedBean(name="UtilisateursController") 

Ich hoffe, Sie werden Ihr Problem beheben!

+0

danke, ich habe das login-taste problem behoben, aber wenn ich ausführen, auch wenn ich die richtige login und passwort, ich habe immer "Account's Invalid" nachricht !! – usra

+0

Bitte debuggen Sie Ihren Code und überprüfen Sie mit managebean Login-Methode Sie haben richtigen Benutzernamen und Passwort und fügen Sie ** trim() ** mit Benutzernamen und Passwort, während Sie mit der Datenbank überprüfen. –

+0

kannst du mehr erklären, die Verbindung mit der Datenbank ist in Ordnung, der Login Code auch – usra

Verwandte Themen