2017-03-15 1 views
0

Grundsätzlich gibt es in der input.xhtml ein Formular, das einen Benutzernamen und ein Passwort annimmt und einem bestimmten Wert entspricht (spielt keine Rolle) das Programm sollte eine Nachricht im Browser ausgeben, aber das passiert nicht. Um das Problem zu beheben, habe ich 2 Zeilen "System.out.println (...)" hinzugefügt, wo ich den Wert der Eigenschaft ausdrucke und was ich herausgefunden habe, ist, dass die Eigenschaften auch nach dem Senden noch null sind. Also nachdem ich auf send in der Konsole geklickt habe, steht "null null". Jede Hilfe wird geschätzt!Nach der Formularübergabe mit java ee und jsf 2,2 sind meine Backing-Bean-Eigenschaften immer noch null

Dies ist die Klasse UserBean (Backing bean)

package bean; 

import java.io.Serializable; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 



@ManagedBean 
@SessionScoped 
public class UserBean implements Serializable{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    private String name; 
    private String password; 
    private String output_message; 



    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getPassword() { 
     return password; 
    } 
    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String go(){ 
     output_message = ""; 

     if(name == null && password == null){ 
      output_message += "Both fields cannot be empty!"; 
     }else if(name == "name" && password == "pass"){ 
      output_message += "Success!"; 
     }else{ 
      output_message += "Data is wrong!"; 
     } 

     System.out.println(name); 
     System.out.println(password); 

     return output_message; 
    } 

    public String getOutput_message() { 
     return output_message; 
    } 
    public void setOutput_message(String output_message) { 
     this.output_message = output_message; 
    } 
    public String ret(String r){ 
     return r; 
    } 

} 

Dies ist die input.xhtml Datei, welche die Form enthält, die die Daten an die bean vorlegen wird. (Ignorieren Sie die URL template.xhtml, es ist nur ein Elternteil Vorlage, die eine Kopf- und eine Fußzeile andere als die Mitte-Gehalt hat, der definiert, input.xhtml)

<!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://xmlns.jcp.org/jsf/facelets" 
    xmlns:h="http://xmlns.jcp.org/jsf/html" 
    xmlns:f="http://xmlns.jcp.org/jsf/core" 
    xmlns:cc="http://java.sun.com/jsf/composite/myComponent"> 

<ui:composition template="/WEB-INF/templates/template.xhtml"> 

    <ui:define name="content"> 

     <style type="text/css"> 
      #form1{ 
       position: absolute; 
       top: 20%; 
       left:40%; 
       border: 1px solid black; 
       background-color: orange; 
      } 
      td{ 
       padding-top:10px; 
      } 

      input[type="text"]{ 
       backgorund-color:blue; 
      } 

     </style> 

     <form id="form1" method="post"> 
     <table columns="2"> 
      <tr> 
       <td><span>Emri:</span></td> 
       <td><input type="text" id="emri" value="#{userBean.name}"/></td> 
      </tr> 
      <tr> 
       <td><span>Password:</span></td> 
       <td><input type="password" id="pass" value="#{userBean.password}"/></td> 
      </tr> 
      <tr> 
       <td colspan="2" align="center"><button type="submit" onclick="#{userBean.go()}">Send</button></td> 

      </tr> 
     </table> 
     </form> 

     <p>#{user.output_message}</p> 


    </ui:define> 
</ui:composition> 
</html> 

Antwort

0

Ich habe das gerade gelöst. Das Problem war mit dem Eingabe-Tag, das Wert-Attribut stellt nicht den Wert dar, der in das Textfeld geschrieben wird, ist nur eine Art von einem Standardwert oder etwas von einem Vorwert. Wie auch immer, anstelle von Eingabe- und Formular-Tags, die ich verwendet habe und was gut funktioniert hat h ist ein Namespace mit URL xmlns: h = "http://xmlns.jcp.org/jsf/html"

0

Das Problem wird durch die Schaltfläche HTML-Tag verursacht. Verwenden Sie keine HTML-Schaltflächen oder Anker, wenn Sie den JSF-Mechanismus verwenden möchten. Verwenden Sie stattdessen die Komponenten (Schaltfläche/Link), um die Seite zu senden. Definieren Sie die Navigationsregeln der userBean.go sollte den nächsten Seitenname zurückgeben.

+0

Überprüfen Sie meine Antwort unten. Und vielen Dank für Ihre Hilfe! @ The Bitman – AldiT

+0

Oh ja. Ich habe es nicht verstanden. Sie sollten Eingabe/Ausgabe-Komponenten aus dem Namespace h: verwenden, wenn Sie mit JSF verarbeiten, validieren usw. wollen. –