Apache flex Flex:将要保存的对象传递回服务器会冻结应用程序
我有一个NavigatorContent,当用户在DataGrid中选择一个项目时会显示它。 此NavigatorContent包含一个窗体和一个显示相关对象的手风琴 当用户按下NavigatorContent中的Save按钮时,应通过BlazeDS调用服务器将表单和子项保存到数据库中:Apache flex Flex:将要保存的对象传递回服务器会冻结应用程序,apache-flex,blazeds,Apache Flex,Blazeds,我有一个NavigatorContent,当用户在DataGrid中选择一个项目时会显示它。 此NavigatorContent包含一个窗体和一个显示相关对象的手风琴 当用户按下NavigatorContent中的Save按钮时,应通过BlazeDS调用服务器将表单和子项保存到数据库中: saveObjectToDB() { //Map the form values to the object object.field1 = object_field1.text; object.f
saveObjectToDB()
{
//Map the form values to the object
object.field1 = object_field1.text;
object.field2 = object_field2.selectedDate as Date;
object.relatedobject3 = comboBox.selectedItem as RelatedObject3;
//etc.....
//Loop through accordion to save the child objects
for(var i:int= 0; i < accordion.numChildren; i++ )
{
if(accordion.getChild(i) is RelatedObject1Form)
{
var formRelated1:RelatedObject1Form = accordion.getChild(i) as RelatedObject1Form;
//Map the form values to the related object
object.relatedobject1.field1 = formRelated1.relatedobject1_field1.selectedDate;
//etc...
}
if(accordion.getChild(i) is RelatedObject2Grid)
{
var gridRelated2:RelatedObject2Grid = accordion.getChild(i) as RelatedObject2Grid;
//Get dataProvider for the datagrid of the relatedObject
object.relatedobject2 = gridRelated2.object.relatedobject2;
}
}
// Call the remoting object's saveObject method
var saveObjectOperation:Operation = new Operation();
saveObjectOperation.name = "saveObject";
saveObjectOperation.arguments=[object];
ro.operations = [saveObjectOperation];
saveObjectOperation.send();
if(isNewObject)
//dispatchEvent new object
else
//dispatchEvent object updated
}
我传递给accordion子对象的对象在NavigatorContent和accordion子对象中是公共的和[Bindable],并且最初是从主数据网格传递的。这可能是与这个问题有关的问题吗
非常感谢您的帮助/意见。这个问题开始影响我的美容睡眠;) 我猜您在序列化程序中花费了很多时间。在应用程序中放置一个跟踪目标,并在控制台运行时观察它,以查看发送的内容
最有可能的问题来自DisplayObjects——如果将它们添加到应用程序中,它们将有一个对应用程序本身的引用,并将导致一些序列化程序开始序列化整个应用程序。可绑定对象可能附加了一些奇怪的事件,这些事件最终会附加到DisplayObjects上-尝试将其中的相关值复制到对象中,而不是仅仅引用现有对象。以前有人遇到过此类问题吗?=)谢谢Dan Monego!我明天早上会查出来,然后回来报告=)再次感谢你为我指明了正确的方向。我仍然不能完全确定问题是什么,但我现在通过使用ObjectUtil.copy()来解决它,然后将相关对象设置为null,通常只将所需信息发送回服务器。我认为你对显示对象的看法是正确的。我想我找到了把事情搞砸的东西!:)我仍然认为这是一个奇怪的问题。
var relatedObjectForm:RelatedObject1Form= new RelatedObject1Form();
accordion.addChild(relatedObjectForm);
relatedObjectForm.object= object;
relatedObjectForm.ro = this.ro;