我已经组装了一个Java/BrazeDS服务器,它创建了一个通用的GridBean对象。此GridBean包含:
List<ColumnDef>
,其中ColumnDef包含列标题、字段名称List<Object>
,其中我的对象是一些包含PropertyChangeSupport
的java pojo
然后,我创建了一个Flex应用程序,它使用RemoteObjectServiceWrapper
来调用我的java服务器,获取GridBean
,从columnDefs
创建一些DataGrid
列,然后将dataProvider
设置为对象列表。到目前为止,一切都呈现出来了。
现在,我真正想做的是:在flex端设置某种事件处理程序,这样,如果我的项目/对象在数据网格中被编辑,我就会向java发出一条消息,说"编辑了这个项目上的这个字段"。最终目标是有一种很好的通用方法来在flex数据网格中呈现Java中的任何对象列表。
实际上,您谈论的是ManagedObjects,它在BlazeDS中不受本机支持。(它是LCDS的开箱即用功能)。
但是,有第三方工具可以为您提供此功能。
Farata系统提供Clear Builder(我相信它通过生成的代码提供CRUD支持)。
还有dpHibernate(我应该透露我是它的主要开发人员之一)。
使用dpHibernate,你想要的是可以实现的:
public function updateObject():void
{
var book:Book; // loaded from the server earlier in the application
book.title = "Clean Code";
book.save();
}
实体类(在本例中为Book
)只需要实现几个简单的接口方法(主要处理身份的概念),不需要任何生成的代码。
这里有一个非常完整的更新功能的工作示例。