【问题标题】:RequestFactory receive dataRequestFactory 接收数据
【发布时间】:2012-09-13 20:32:31
【问题描述】:

我正在尝试使用 GWT RF 取回数据,但我遇到了一些麻烦。 这是我的工厂、代理和实体。

server.domain 包下的实体:

public class Job implements Serializable {
private int id;
private String announcer;
private String applied;
private String date;
private String description;
private String email;
private String title;
private int version;
static SessionFactory factory;
static ServiceRegistry serviceRegistry;
public Job() {
    try {
        Configuration configuration = new Configuration();
        configuration.configure();
        serviceRegistry = new ServiceRegistryBuilder().applySettings(
        configuration.getProperties()).buildServiceRegistry();
        factory = configuration.buildSessionFactory(serviceRegistry);
    }catch (Throwable ex) {
        System.err.println("Failed to create sessionFactory object." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}
//Setters&Getters
public void persist() {
        Session session = factory.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            Job job = this;
            session.save(job);
            tx.commit();
        } catch (HibernateException e) {
            if (tx != null)
                tx.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }
    }
public static List<Job> findAllJobs() {
        Session session = factory.openSession();
        Transaction tx = null;
        List<Job> list = null;
        try {
            tx = session.beginTransaction();
            Query query = session.createQuery("select * from Job");
            list = query.list();
        } catch (HibernateException e) {
            if (tx != null)
                tx.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }
        return list;
    }

JobRequest 类文件包含:

Request<List<JobProxy>> findAllJobs();

及入口模块:

final EventBus eventBus = new SimpleEventBus();
JobRequestFactory requestFactory = GWT.create(JobRequestFactory.class);
requestFactory.initialize(eventBus);
JobRequest request = requestFactory.jobRequest();
JobProxy newJob = request.create(JobProxy.class);
requestFactory.jobRequest().findAllJobs().to(new Receiver<List<JobProxy>>(){
public void onSuccess(List<JobProxy> jobs)
{
    System.out.println("SIZE:"+jobs.size());
}
}).fire();

最后我的错误是:

com.google.web.bindery.requestfactory.server.ServiceLayerDecorator die
SEVERE: No RequestContext for operation Lk3VEjMsjGdUyVzlgtz$ggTrjMA=

我不知道为什么会这样……

【问题讨论】:

    标签: gwt requestfactory


    【解决方案1】:

    这通常意味着ValidationTool(或注释处理器)没有与最新版本的JobRequestFactory 一起运行,尤其是在JobRequest 不存在时运行它,JobRequestFactory 有没有返回 JobRequestfindAllJobs 的方法不存在或具有不同的签名(例如接受参数)。

    【讨论】:

    • 您好,感谢您的回复,我将 hibernate-annotation 和 rf-apt 作为注释处理器,我只保留了 rf-apt 但仍然相同。上面发布的入口模块中的 sn-p 在第一行执行。我已经在 Eclipse 中清理了项目,重新启动了会话。但还是一样。
    • ValidationTool 如何/何时运行?您的项目是如何启动/部署的?这是在 DevMode 还是 prod 模式?使用 DevMode 中的服务器代码或部署到另一个 servlet 容器中?
    • 项目在开发模式下通过 eclipse 启动,而不是在另一个 servlet 中启动。除了将它放在构建路径上之外,我没有对验证工具做任何特别的事情。
    • 所以你有configured Eclipse 来运行注释处理器?生成的JobRequestFactoryDeobfuscatorBuilder 类是否正确引用了您的findAllJobs,并具有正确的签名? (以及它的操作token是什么?和错误信息中报告的一样吗?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多