2013-01-15 26 views
0

我正在学习如何通过执行下面的示例来将Spring与GWT和RequestFactory集成。我得到了一个N​​ullPointerException,我不知道为什么。谁能帮我?GWT + Spring + Hiberante。没有任何理由

这里是我的代码:

@Repository 
public class EmployeeDAO implements IEmployeeDAO { 

@PersistenceContext 
private EntityManager entity; 

@Override 
public Employee findById(Long id) { 
    Query query = entity.createQuery("from Employee where id = :param"); 
    query.setParameter("param", id); 
    query.setMaxResults(1); 
    return (Employee) query.getSingleResult(); 
} 

@Transactional(propagation = Propagation.REQUIRED) 
@Override 
public void save(Employee employee) { 
    entity.merge(employee); 
} 

@Override 
public void remove(Employee employee) { 
    entity.remove(employee); 
} 

@SuppressWarnings("unchecked") 
@Override 
public List<Employee> getAllEmployee() { 
    Query query = entity.createQuery("from Employee"); 
    return query.getResultList(); 
} 
// ... 
} 

和:

@Service(value = IEmployeeDAO.class, locator = DaoLocator.class) 
public interface EmployeeRequestContext extends RequestContext { 

Request<EmployeeProxy> findById(Long id); 

Request<Void> save(EmployeeProxy employee); 

Request<Void> remove(EmployeeProxy employee); 

Request<List<EmployeeProxy>> getAllEmployee(); 

Request<EmployeeProxy> findOneByName(String name); 

} 

和:

@ProxyFor(Employee.class) 
public interface EmployeeProxy extends EntityProxy { 

Long getId(); 

String getName(); 

String getSurname(); 

void setId(Long id); 

void setName(String name); 

void setSurname(String surname); 

Long getVersion(); 

void setVersion(Long version); 

} 

的NullPointerException异常是投GWT入口点方法:

protected void refresh() {  
    context = createFactory().employeeRequest(); 
    final EmployeeProxy ep = context.create(EmployeeProxy.class); 
    ep.setName("Jan"); 
    ep.setSurname("Kowalski"); 
    ep.setVersion(new Long(0)); 
    context.save(ep).fire(new Receiver<Void>() { 

     @Override 
     public void onSuccess(Void response) { 
      employeeList.add(ep); 
     } 

     @Override 
     public void onFailure(ServerFailure error) { 
      System.out.println("error podczas zapisu"); 
     } 

    }); 

    context = createFactory().employeeRequest(); 
    context.getAllEmployee().fire(new Receiver<List<EmployeeProxy>>() { 

     @Override 
     public void onSuccess(List<EmployeeProxy> response) { 
      System.out.println(" " + response); // NULL 
     } 

     @Override 
     public void onFailure(ServerFailure error) { 

     } 

    }); 
    System.out.println("Bedziemy wyswietlac dane!"); 
    updateTable(employeeList); 
} 

最后一个:方法,创建厂:

private static EmployeeRequestFactory createFactory() { 
    EmployeeRequestFactory factory = GWT.create(EmployeeRequestFactory.class); 
    factory.initialize(new SimpleEventBus()); 
    return factory; 
    } 

请帮我...

回答

0

请打印对NullPointerException异常堆栈跟踪。只有这样我们才能分析异常的原因。

+0

当我使用“mvn gwt:run”命令时,可能Autowired不起作用。有什么解决方案可以替代Spring Autowired? –

+0

你可以发布你的web.xml吗?和堆栈跟踪? – David