2012-01-27 38 views
1

我所問的問題可能是一個非常簡單的問題。 我想在登錄成功後顯示用戶詳細信息。無法使用@ManagedProperty顯示數據庫結果

我的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。你們可以指出我如何使用ManageProperty,以便我可以在我的ClientDetails POJO中將用戶名設置爲我的電子郵件字段時獲得該值。

回答

1

你需要把EL-表達到ManagedProperty:

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

確保名稱是正確的。而且LoginController有正確的註釋。

+0

我編輯了我的問題。我做了你告訴和重定向時,我的表單是空的,沒有在表中的值 – enthusiastic 2012-01-27 11:17:51

+0

@learner:你是否改正了'value =「#{loginCOntroller}中的錯字?使用調試器並檢查是否屬性設置正確 – 2012-01-27 11:40:53

+0

是的我糾正了錯字,並試過。我看不到任何用戶的具體細節正在加載... – enthusiastic 2012-01-27 11:58:13