仍在使用GWT和App Engine,我遇到了这个问题:
我有一个填充了各种数据的应用程序引擎,我想使用GWT RPC在客户端上呈现.
我发现了很难的方法,因为我的Model对象是用JDO注释的,所以我不能将它们发送回客户端,因为它们不是可序列化的.这意味着我将不得不创建一个中间类层来从我的模型对象中提取数据,并将其发送回客户端以异步使用.
我想知道,有可能在servlet中构造一个GWT对象并将其发送回来使用吗?例如,servlet将接收我的异步请求,从数据库中提取我想要的数据,创建具有适当数据子元素的GWT VerticalPanel(),并将该VerticalPanel发送回客户端以进行注入.
我对这里发生的Java/Javascript交互的理解仍然模糊不清,我认为在应用程序被删除后发送未编译为Javascript的Java对象将无法工作.任何人都可以为我澄清一下吗?
没有服务器不能创建要在表示层中使用的GWT UI对象(如垂直面板),也不应该,这就是为什么它被称为'服务器'和'表示层'为数据服务并处理所有业务逻辑,另一个在屏幕上显示事物并允许用户与他们交互.
但是,您可以将JPA带注释的POJO发送到前端(我们在所有应用程序中都这样做).您只需要包含注释本身的源代码,以便GWT知道如何编译它们.您还需要确保您的POJO位于NameOfXmlFile.gwt.xml文件引用的包中,例如:
在我的情况下,这个文件位于名为"domain"的包上方的文件夹中,其中所有JPA注释的POJO都是实时的.然后在您的客户端,您告诉它继承.gwt.xml文件:
您可以在这些类中加入限制(例如不支持BigDecimal等),但可以发送任何可由GWT编译器编译的内容(以及JPA注释当然可以),而无需任何类型的传输对象.这是GWT的真正优势之一,您可以在整个应用程序中使用相同的JPA Pojos,而无需创建任何其他类似对象.
编辑:我刚刚注意到你说JDO而不是JPA.我认为同样适用于那里,但如果它们只是注释?