2012-01-27 2 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를가 빈 클래스

@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

나는 나의 질문을 편집했다. 나는 리다이렉트했을 때, 나의 양식이 feilds의 값없이 비어있다. – enthusiastic

+0

@learner :'value = "# {loginCOntroller}'에서 오타를 수정 했는가? –

+0

예 오타를 수정하고 시도했습니다. 사용자 특정 세부 정보가로드되는 것을 볼 수 없습니다 ... – enthusiastic

관련 문제