gpt4 book ai didi

java - 无法使用 @ManagedProperty 显示来自数据库的结果

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:37 25 4
gpt4 key购买 nike

我问的问题可能是一个非常简单的问题。我想在登录成功后显示用户详细信息。

我的登录 Controller

  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:yourid@domain.com" 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>

两者都是托管 bean,并且都在 session 范围内。该应用程序是 Java EE 5。

我需要用户在我的 editController 中输入的用户名。我认为我使用了 ManageProperty 错误。你们能否指出我如何使用 ManageProperty,以便在我的 ClientDetails POJO 中将用户名设置为我的电子邮件字段时可以获得该值。

最佳答案

您需要将 EL 表达式放入 ManagedProperty 中:

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

确保名称正确。并且 LoginController 有正确的注释。

关于java - 无法使用 @ManagedProperty 显示来自数据库的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9032054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com