2014-01-22 5 views
0

Я пытаюсь в своем приложении получить идентификатор текущего пользователя, когда он создает документ для регистрации этого документа с идентификатором пользователя. Но при использовании <f:viewParam> идентификатор пользователя в компоненте douce всегда имеет значение null.viewParam возвращает нулевое значение

Вот мой код:

  <h:form id="form"> 
      <br></br> 

      <div class="centre"> 
       <p:graphicImage url="images/usericon.png" id="usericon" 
        alt="utilisateur IsetN" style="width:100px;height:100px"></p:graphicImage> 
      </div> 
      <br></br> 

      <div class="centre"> 
       <p:inputText placeholder="E-mail" required="true" id="email" 
        value="#{userBean.email}" requiredMessage="E-mail obligatoire"> 
        <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" /> 
        </p:inputText> 
        <p:message for="email"></p:message> 
      </div> 
      <br></br> 
      <div class="centre"> 
       <p:password id="motdepasse" value="#{userBean.password}" required="true" 
        placeholder="Mot de passe" requiredMessage="Mot de passe Obligatoire"> 

        </p:password> 
        <p:message for="motdepasse"></p:message> 
      </div> 
      <br></br> 
      <div class="centre"> 
       <h:commandButton id="login" value="Connexion" action="#{userBean.login}" update="form" > 
       <f:param name="IdUser" value="#{userBean.cin}" > 
          </f:param> 
       </h:commandButton> 
       <p:message for="login"></p:message> 
      </div> 
      <br></br> 
      <div class="centre"> 
       <a href="AideAdmin.xhtml">Compte n'est pas accessible ?</a><br></br> 
      </div> 
      <div class="centre"> 
       <a href="authentification.xhtml">Connexion premier fois ?</a><br></br> 
      </div> 

     </h:form> 

и это страница назначения

     !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:f="http://java.sun.com/jsf/core" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:p="http://primefaces.org/ui"> 
     <f:view contentType="text/html"> 
<h:head> 


    <link rel="stylesheet" type="text/css" href="css/styles.css" /> 
    <title>Profil: Portail IsetN</title> 
    <link rel="stylesheet" href="css/style.css" media="screen" /> 
</h:head> 
<f:metadata> 
     <f:viewParam name="IdUser" value="#{userBean.cin}" 
      converter="javax.faces.Long" /> 
     <f:viewParam name="IdUser" value="#{documentBean.cin}" 
      converter="javax.faces.Long" /> 
    </f:metadata> 
<h:body> 

и это код managedBeans

    @ManagedBean(name="userBean") 
      @SessionScoped 
      public class UtilisateurBean implements java.io.Serializable { 
private static final long serialVersionUID = 1L; 
private Utilisateur newUtilisateur = new Utilisateur(); 
private List<SelectItem> etudsItem; 
private DataModel utilisateurs; 
private Utilisateur Utilisateur=new Utilisateur(); 
private Utilisateur editUtilisateur; 
private Long cin; 
private String nom; 
private String prenom; 
private String email; 
private String password; 

private DaoUtilisateur eDao = new DaoUtilisateur(); 

public String login(){ 
    try{ 
Utilisateur= eDao.findUtilisateurByEmail(email, password) ; 

if (Utilisateur==null){ 
    FacesMessage msg = new FacesMessage("Mot de passe ou email non valide"); 
    FacesContext.getCurrentInstance().addMessage(null, msg); 
     return "loginfailed"; 
    } 

else{ 
    cin=Utilisateur.getCin(); 
    System.out.println("cin connecté "+cin); 
    return"loginUtilisateur"; 

} 
    } 
     catch(Exception ex){ return"loginfailed";} 
} 

и это документ Bean код

    @ManagedBean(name="documentBean") 
      @SessionScoped 
      public class DocumentBean implements java.io.Serializable{ 

private static final long serialVersionUID = 1L; 
private List<SelectItem> docItems; 
private DataModel documents; 
private List<Document> tps; 
private List<Document> tds; 
private List<Document> annonces; 
private Document newDocument= new Document(); 
private Document editDocument; 
private Long cin; 
     public String create(){ 
    newDocument.setDateajout(new Date()); 
    System.out.println("your cin annonce "+cin); 
    dDao.ajouter(newDocument,cin); 
    newDocument= new Document(); 
    documents.setWrappedData(dDao.selectAll()); 
    return null; 
} 

Я хочу знать, что я пропал, я обновил mojarra, изменил пространства имен, изменил область бобов, но все же он не работает.

ответ

1

Я полагаю, это ваш предполагаемый рабочий процесс:

  1. пользователь вводит E-Mail/Пароль на входных полей, нажмет кнопку
  2. сервер извлечений правильный пользователя и заполняет user.cin поле
  3. сервер перенаправляет пользователя на целевую страницу

под этим asumptions вы не имеете техническую, но логическую задачу:

  1. вы загрузите логин-страницу и записать (в этот момент не определен) пользователя-Cin в качестве параметра запроса HTTP
  2. вы делаете логин и отправить параметр запроса HTTP IdUser (который null см 1.) параллельно с действием входа
  3. через <f:viewParam /> вы берете null -параметр и вводите его в документBean.

вам, вероятно, придется выбирать другое решение. Надеюсь, это поможет ...

+1

Я переключился на использование '' и теперь его работает – MeknessiHamida

+0

Ничего, поэтому отметьте ответ как «правильный», чтобы он мог помочь и другим. :-) –

+0

Действительно я собирался отметить это как ответ, это логическая проблема – MeknessiHamida

Смежные вопросы