0
我正在学习如何通过执行下面的示例来将Spring与GWT和RequestFactory集成。我得到了一个NullPointerException,我不知道为什么。谁能帮我?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;
}
请帮我...
当我使用“mvn gwt:run”命令时,可能Autowired不起作用。有什么解决方案可以替代Spring Autowired? –
你可以发布你的web.xml吗?和堆栈跟踪? – David