Apache flex Flex:将要保存的对象传递回服务器会冻结应用程序

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

我有一个NavigatorContent,当用户在DataGrid中选择一个项目时会显示它。 此NavigatorContent包含一个窗体和一个显示相关对象的手风琴

当用户按下NavigatorContent中的Save按钮时,应通过BlazeDS调用服务器将表单和子项保存到数据库中:

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;