2012-01-27 19 views
1

私が求めている質問はおそらく非常に単純なものでしょう。 ログインが成功したらユーザーの詳細を表示したい。@ManagedPropertyでDBからの結果を表示できません

マイloginController

public LoginController() { 
} 

public String getPassword() { 
    return password; 
} 

public String getUsername() { 
    return username; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

public void setUsername(String username) { 
    this.username = username; 
} 

public String isValidUser() { 
    String isValid="Invalid user"; 
    EntityManager em = null; 
    try { 
     em = getEntityManager(); 
     Query query = em.createNamedQuery("ClientDetails.findByClientId"); 
     query.setParameter("clientId", username); 
     //hashPassword(password); 
     ClientDetails record = (ClientDetails) query.getSingleResult(); 
     System.out.print(record); 
     String passwordHash=hashPassword(password); 
     if (record.getPassword().equals(passwordHash)) { 
      System.out.print("Valid user"); 
      isValid = "valid"; 
     } else { 
      System.out.print("InValid user"); 
      isValid="invalid"; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     em.close(); 
    } 
    System.out.println("Login status = " + isValid); 
    return isValid; 
} 

private EntityManager getEntityManager() { 
    return emf.createEntityManager(); 
} 

public String hashPassword(String password) { 
    String protectedPassword = null; 
    try { 
     System.out.println("password entered....." + password); 
     MessageDigest md5 = MessageDigest.getInstance("MD5"); 
     md5.update(password.getBytes()); 
     BigInteger hash = new BigInteger(1, md5.digest()); 
     protectedPassword = hash.toString(16); 
     System.out.println("password hashed....." + protectedPassword); 
    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } 
    return protectedPassword; 
} 

私はEditControllerは、Beanクラス

@Resource 
private UserTransaction utx = null; 
@PersistenceUnit(unitName = "AdminPU") 
private EntityManagerFactory emf = null; 
private ClientDetails clientDetails; 
private ClientWebsiteDetails clientWebsiteDetails; 

@ManagedProperty(value="#{loginController}") 
private LoginController login; 

    private Boolean booleanFacebook; 
    private Boolean booleanTwitter; 
    private Boolean booleanClientSocial; 

public EditAccountController() { 
} 

public Boolean getBooleanClientSocial() { 
    return booleanClientSocial; 
} 

public Boolean getBooleanFacebook() { 
    return booleanFacebook; 
} 

public Boolean getBooleanTwitter() { 
    return booleanTwitter; 
} 

public void setBooleanClientSocial(Boolean booleanClientSocial) { 
    this.booleanClientSocial = booleanClientSocial; 
} 

public void setBooleanFacebook(Boolean booleanFacebook) { 
    this.booleanFacebook = booleanFacebook; 
} 

public void setBooleanTwitter(Boolean booleanTwitter) { 
    this.booleanTwitter = booleanTwitter; 
} 

public ClientDetails getClientDetails() { 
    if (clientDetails == null) { 
     clientDetails = new ClientDetails(); 
    } 
    return clientDetails; 
} 

public ClientWebsiteDetails getClientWebsiteDetails() { 
    if (clientWebsiteDetails == null) { 
     clientWebsiteDetails = new ClientWebsiteDetails(); 
    } 
    return clientWebsiteDetails; 
} 

public LoginController getLogin() { 
    return login; 
} 

public void setLogin(LoginController login) { 
    this.login = login; 
} 

    public String getAccountDetails() { 
    String result = "Details not saved"; 
    EntityManager em = null; 
    try { 
     System.out.println("Retreiving client details"); 
     utx.begin(); 
     em = getEntityManager(); 
     clientDetails.setClientId(login.getUsername()); 
     Query customerDetails = em.createQuery("ClientDetails.findByClientId"); 
     Query websiteDetails = em.createQuery("ClientWebsiteDetails.findByClientAccountId"); 
     List customerList = customerDetails.getResultList(); 
     List websiteList = websiteDetails.getResultList(); 
     Iterator clientIt = customerList.iterator(); 
     Iterator websiteIt = websiteList.iterator(); 
     while (clientIt.hasNext()) { 
      clientDetails = (ClientDetails) clientIt.next(); 
      clientDetails.setPrimaryContactName(clientDetails.getPrimaryContactName()); 
      clientDetails.setCompany(clientDetails.getCompany()); 
      clientDetails.setPrimaryEmailId(clientDetails.getPrimaryEmailId()); 
      clientDetails.setPrimaryContactNo(clientDetails.getPrimaryContactNo()); 
      clientDetails.setPrimaryDesignation(clientDetails.getPrimaryDesignation()); 
     } 
     while (websiteIt.hasNext()) { 
      clientWebsiteDetails = (ClientWebsiteDetails) websiteIt.next(); 
      clientWebsiteDetails.setProductionUrl(clientWebsiteDetails.getProductionUrl()); 
      clientWebsiteDetails.setSiteName(clientWebsiteDetails.getSiteName()); 
      clientWebsiteDetails.setDescription(clientWebsiteDetails.getDescription()); 
      clientWebsiteDetails.setFacebook(clientWebsiteDetails.getFacebook()); 
      clientWebsiteDetails.setTwitter(clientWebsiteDetails.getTwitter()); 
      clientWebsiteDetails.setClientSocial(clientWebsiteDetails.getClientSocial()); 
     } 

     if ((clientWebsiteDetails.getFacebook().equals("y")) && (clientWebsiteDetails.getTwitter().equals("y"))) { 
      booleanFacebook = true; 
      booleanTwitter = true; 
     booleanClientSocial = false; 
    } else if ((clientWebsiteDetails.getFacebook().equals("n")) && (clientWebsiteDetails.getTwitter().equals("n") && (clientWebsiteDetails.getClientSocial().equals("n")))) { 
     booleanFacebook = false; 
     booleanTwitter = false; 
     booleanClientSocial = false; 
    } 
    System.out.print(utx.getStatus()); 
    utx.commit(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
return result; 

}

editaccount.xhtml

<h:form id="RegisterForm"> 
     <h:commandLink value="Logout" action=""></h:commandLink> 
     <h:commandLink value="Change Password" action=""></h:commandLink> 
     <h:outputLabel value=""></h:outputLabel> 
     <h:panelGrid> 
      <h1>Customer Information</h1> 
      <h:outputLabel value="Name:" for="name" /> 
      <h:inputText id="name" required="true" requiredMessage="Please enter your name" value="#{editAccountController.clientDetails.primaryContactName}"> 
       <f:validateLength maximum="50"></f:validateLength> 
      </h:inputText> 
      <h:message for="name"></h:message> 

      <h:outputLabel value="Company:" for="company" /> 
      <h:inputText id="company" required="true" requiredMessage="Please enter your company" value="#{editAccountController.clientDetails.company}"> 
       <f:validateLength maximum="50"></f:validateLength> 
      </h:inputText> 
      <h:message for="company"></h:message> 

      <h:outputLabel value="Designation:" for="designation" /> 
      <h:inputText id="designation" required="true" requiredMessage="Please enter your designation" value="#{editAccountController.clientDetails.primaryDesignation}"> 
       <f:validateLength maximum="50"></f:validateLength> 
      </h:inputText> 
      <h:message for="designation"></h:message> 

      <h:outputLabel value="Email Id:" for="email" /> 
      <h:inputText id="email" required="true" requiredMessage="Please enter your email, eg:[email protected]" value="#{editAccountController.clientDetails.primaryEmailId}"> 
       <f:validateLength maximum="70"></f:validateLength> 
      </h:inputText> 
      <h:message for="email"></h:message> 

      <h:outputLabel value="Contact No:" for="phone" /> 
      <h:inputText id="phone" required="true" requiredMessage="Please enter your contact number" value="#{editAccountController.clientDetails.primaryContactNo}"> 
       <f:validateLength minimum="10" maximum="25"></f:validateLength> 
      </h:inputText> 
      <h:message for="phone"></h:message> 


      <h2>Website Information</h2> 
      <h:outputLabel value="Domain:" for="production_url" /> 
      <h:inputText id="production_url" required="true" requiredMessage="Please enter domain name,eg:www.domain.com OR yourip/app_name" value="#{editAccountController.clientWebsiteDetails.productionUrl}"> 
       <f:validateLength maximum="50"></f:validateLength> 
      </h:inputText> 
      <h:message for="production_url"></h:message> 

      <h:outputLabel value="Site Name:" for="site_name" /> 
      <h:inputText id="site_name" required="true" requiredMessage="Please enter website name" value="#{editAccountController.clientWebsiteDetails.siteName}"> 
       <f:validateLength maximum="255"></f:validateLength> 
      </h:inputText> 
      <h:message for="site_name"></h:message> 

      <h:outputLabel value="Description:" for="description" /> 
      <h:inputTextarea id="description" rows="2" cols="40" requiredMessage="Please enter website description" value="#{editAccountController.clientWebsiteDetails.description}" title="Description about the website in few lines" required="required"> 
       <f:validateLength maximum="250"></f:validateLength> 
      </h:inputTextarea> 
      <h:message for="description"></h:message> 



      <h3>Social Integration</h3> 
      <h:outputLabel for="fb" value="Facebook:"></h:outputLabel> 
      <h:selectBooleanCheckbox id="fb" value="#{editAccountController.booleanFacebook}" title="Select to integrate our Facebook app in your site"> 
      </h:selectBooleanCheckbox> 
      <h:outputLabel for="tweet" value="Twitter:"></h:outputLabel> 
      <h:selectBooleanCheckbox id="tweet" value="#{editAccountController.booleanTwitter}" title="Select to integrate our Twitter app in your site"></h:selectBooleanCheckbox> 
      <h:outputLabel for="your_app" value="Integrate your social app with BazaAR:"></h:outputLabel> 
      <h:selectBooleanCheckbox id="your_app" value="#{editAccountController.booleanClientSocial}" title="Select to integrate your social apps"></h:selectBooleanCheckbox> 

      <h:commandButton value="Register" type="submit" action="#{editAccountController.saveAccountDetails}"></h:commandButton> 

     </h:panelGrid> 
    </h:form> 

どちらも管理されている豆を管理していますndはセッションスコープにあります。アプリはJava EE 5です。

私はeditControllerにユーザが入力したユーザ名が必要です。私は間違ったManagePropertyを使用していると思います。あなたは私のClientDetails POJOの私の電子メールフィールドに設定されている場合、私は値を得ることができるようにManagePropertyを使用する方法を指摘することができます。

答えて

1

あなたはManagedPropertyにEL式を配置する必要があります。

@ManagedProperty(value="#{loginController}") 

名が正しいことを確認します。 LoginControllerには適切なアノテーションがあります。

+0

私は私の質問を編集しました。私はあなたにリダイレクト時に、フォームが空でないと答えました – enthusiastic

+0

@learner: 'value ="#{loginCOntroller} 'の入力ミスを修正しましたか?プロパティが正しく設定されている場合、チェック –

+0

はい私はタイプミスを修正し、tried.Iは、任意のユーザーの特定の詳細がロードされて見ることができない... – enthusiastic

関連する問題