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中將用戶名設置爲我的電子郵件字段時獲得該值。
我編輯了我的問題。我做了你告訴和重定向時,我的表單是空的,沒有在表中的值 – enthusiastic 2012-01-27 11:17:51
@learner:你是否改正了'value =「#{loginCOntroller}中的錯字?使用調試器並檢查是否屬性設置正確 – 2012-01-27 11:40:53
是的我糾正了錯字,並試過。我看不到任何用戶的具體細節正在加載... – enthusiastic 2012-01-27 11:58:13