// This is my LoginController
public String login() throws InvoiceException{
//HttpSession session ;
String email = this.getEmail();
String password = this.getPassword();
if(loginService.authenticateLogin(email, password) == true){
System.out.println("Login Successful");
customer = loginService.getCustomerBean(email);
//Creating a new Session
/*session = (HttpSession) sessionManager.getSession("CustomerInfo");
session.setAttribute("CustomerId",customer.getCustomerId());
session.setAttribute("email", customer.getEmail());
session.setAttribute("CustomerName", customer.getFirstName());
sessionManager.setSession("CustomerInfo", session);*/
sessionManager.setSession("CustomerId", customer.getCustomerId());
sessionManager.setSession("email", customer.getEmail());
sessionManager.setSession("CustomerName", customer.getFirstName());
return "ProfilePage";
}
else{
setErrorMessage("Bad Username/Password");
return "LoginOrRegister";
}
}
/ *这是我的个人资料页面控制器的构造函数。 profileService在类的实例变量声明部分开始时自动装配。 sessionManager是类SessionManager的一个实例,它包含JSF中会话跟踪的get和set会话的方法。
我想显示用户的个人资料页面以及存储在DB中的所有值。但是当spring实例化bean要注入时,所有这些值最初都会被设置为null吗?我该如何设定这些初始值?服务类也是实例化的服务类,它是自动装配的。
public ProfilePageController(){
sessionManager = new SessionManager();
customerId = (Integer) sessionManager.getSession("CustomerId");
email = (String) sessionManager.getSession("email");
firstName = (String) sessionManager.getSession("CustomerName");
try {
customer = profileService.getCustomerBean(customerId);
} catch (InvoiceException e) {
e.printStackTrace();
}
this.setFirstName(customer.getFirstName());
this.setLastName(customer.getLastName());
this.setEmail(customer.getEmail());
this.setPassword(customer.getPassword());
this.setCity(customer.getCity());
this.setState(customer.getState());
this.setCountry(customer.getCountry());
this.setPhoneNumber(customer.getPhoneNumber());
this.setGender(customer.getGender());
this.setZipCode(customer.getZipCode());
this.setCustomerId(customer.getCustomerId());
}
答案 0 :(得分:0)
那可能无法奏效。把自己放在春天的鞋子里。您需要创建一个ProfilePageController并自动装配其中的一些字段。你怎么能这样做?
好吧,为了在对象中设置字段,你需要那个对象。所以你需要先创建对象。你怎么能创建一个对象?通过调用它的构造函数,对吧?
但是您的构造函数尝试使用该字段,并且该字段仅在调用构造函数后才会自动装配。所以你得到一个NullPointerException。
有几种解决方案(可以合并)
@PostConstruct
注释的方法中进行初始化工作。