2017-03-15 3 views
0

Fondamentalement, dans input.xhtml il y a une forme qui prend un nom d'utilisateur et un mot de passe et s'ils sont égaux à une valeur spécifique (peu importe la valeur) le programme devrait imprimer un message dans le navigateur, mais cela n'arrive pas. Pour m'assurer du problème j'ai ajouté 2 lignes de "System.out.println (...)" où j'imprime la valeur de la propriété et ce que j'ai découvert est que les propriétés sont toujours nulles même après que je soumette. Donc, après avoir cliqué sur Envoyer dans la console est écrit "null null". Toute aide est appréciée!Après la soumission du formulaire, en utilisant java ee et jsf 2,2, mes propriétés du bean backing sont toujours nulles

Ceci est la classe UserBean (support haricot)

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; 
    } 

} 

Ceci est le fichier de input.xhtml, qui contient le formulaire qui transmettent les données à la fève. (Ignorer l'URL pour template.xhtml, il est juste un modèle de parent qui a un en-tête et un pied de page autre que le milieu du contenu qui input.xhtml définit)

<!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> 

Répondre

0

Je viens de résoudre ce problème. le problème était avec la balise d'entrée, l'attribut de valeur ne représente pas la valeur écrite dans la zone de texte est juste une sorte de valeur par défaut ou une sorte de pré-valeur. Quoi qu'il en soit au lieu de l'entrée et des étiquettes de formulaire que j'ai utilisé et qui a bien fonctionné h est un espace de noms avec url xmlns: h = "http://xmlns.jcp.org/jsf/html"

0

Le problème causé par le bouton balise html. N'utilisez pas de boutons ou d'ancres HTML si vous souhaitez utiliser le mécanisme JSF. Au lieu de cela, utilisez des composants (bouton/lien) pour soumettre la page. Définir les règles de navigation du userBean.go devrait renvoyer le nom de la page suivante.

+0

Vérifiez ma réponse ci-dessous. Et merci beaucoup pour votre aide! @The Bitman – AldiT

+0

Oh oui. Je n'ai pas compris. Vous devez utiliser des composants d'entrée/sortie de l'espace de noms h: si vous voulez traiter, valider, etc. avec JSF. –