Staram sie zrobic moja pierwsza aplikacje przy uzyciu Spring oraz Hibernate
ale mam maly problem.... Wyzuca mi Exception .. Null Pointer
AccountController.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.uea.ht.Controllers;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.util.Assert;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
/**
*
* @author Tomasz
*/
import com.uea.ht.Models.*;
import com.uea.ht.Services.*;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@Controller
public class AccountController {
private AccountService accountService;
public String registrationForm(Map<String, Object> map) {
Account account = new Account();
map.put("account", account);
map.put("accountList", accountService.getAllaccounts());
return "account";
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String registerAccout(@ModelAttribute("account") Account account, ModelMap model) {
account.setPasswordSalt(account.getPasswordHash());
try {
accountService.add(account); // tu wywala Exception
return "success";
} catch (Exception e) {
System.err.println("dscfsd" + e.toString());
return "fail";
}
}
}
Account.java
package com.uea.ht.Models;
public class Account implements java.io.Serializable {
private int id;
private String username;
private String passwordHash;
private String passwordSalt;
private String email;
public Account() {
}
public Account(int id) {
this.id = id;
}
public Account(int id, String username, String passwordHash, String passwordSalt, String email) {
this.id = id;
this.username = username;
this.passwordHash = passwordHash;
this.passwordSalt = passwordSalt;
this.email = email;
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPasswordHash() {
return this.passwordHash;
}
public void setPasswordHash(String passwordHash) {
this.passwordHash = passwordHash;
}
public String getPasswordSalt() {
return this.passwordSalt;
}
public void setPasswordSalt(String passwordSalt) {
this.passwordSalt = passwordSalt;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append("\r\nID:").append(id);
sb.append("\r\nusername:").append(username);
sb.append("\r\npH:").append(passwordHash);
sb.append("\r\npS:").append(passwordSalt);
sb.append("\r\nemail:").append(email);
return sb.toString();
}
}
AccountService.java
package com.uea.ht.Services;
import com.uea.ht.Models.Account;
import com.uea.ht.presistence.AccountDao;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("accountService")
@Transactional(readOnly=true)
public class AccountServiceImpl implements AccountService{
@Autowired
private AccountDao accountDao;
public void add(Account account) {
accountDao.add(account);
}
@Transactional(readOnly=false)
public void edit(Account account) {
accountDao.edit(account);
}
@Transactional
public void delete(int id) {
accountDao.delete(id);
}
@Transactional
public Account getAccount(int id) {
return accountDao.getAccount(id);
}
@Transactional
public List getAllaccounts() {
return accountDao.getAllaccounts();
}
}
AccountDao.Java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.uea.ht.presistence;
import com.uea.ht.Models.Account;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
/**
*
* @author Tomasz
*/
@Repository
public class AccountDaoImpl extends AbstractDaoImpl <Account, String> implements AccountDao{
protected AccountDaoImpl()
{
super(Account.class);
}
@Override
public void add(Account account) {
super.saveOrUpdate(account);
}
@Override
public void edit(Account account) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void delete(int id) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Account getAccount(int id) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public List getAllaccounts() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
Error:
Mar 10, 2013 9:58:09 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/HTracker] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at com.uea.ht.Controllers.AccountController.registerAccout(AccountController.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Moze ktos pomoze ??
Dzieki