diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_edit.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_edit.xml
index 15abe1b87e81da3cd0c062b99cec026af619f272..40065dfffdff88706c441023df3925c18510e43b 100644
--- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_edit.xml
+++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_edit.xml
@@ -107,6 +107,19 @@ except FormValidationError, validation_errors:\n
         value(request)\n
   return form(request)\n
 \n
+def editListBox(listbox_field, listbox):\n
+  """ Function called to edit a listbox\n
+  """\n
+  if listbox is not None:\n
+    gv = {}\n
+    if listbox_field.has_value(\'global_attributes\'):\n
+      hidden_attributes = map(lambda x:x[0], listbox_field.get_value(\'global_attributes\'))\n
+      for k in hidden_attributes:\n
+        gv[k] = getattr(request, k, None)\n
+    for url, v in listbox.items():\n
+      v.update(gv)\n
+      context.restrictedTraverse(url).edit(**v)\n
+\n
 def editMatrixBox(matrixbox_field, matrixbox):\n
   """ Function called to edit a Matrix box\n
   """\n
@@ -212,7 +225,9 @@ try:\n
   # then we edit them\n
   for field in form.get_fields():\n
     parseField(field)\n
-    if(field.meta_type == \'MatrixBox\'):\n
+    if(field.meta_type == \'ListBox\'):\n
+      editListBox(field, request.get(field.id))\n
+    elif(field.meta_type == \'MatrixBox\'):\n
       editMatrixBox(field, request.get(field.id))\n
 \n
   # Maybe we should build a list of objects we need\n
@@ -315,6 +330,7 @@ return request[\'RESPONSE\'].redirect(redirect_url)\n
                             <string>field_id</string>
                             <string>value</string>
                             <string>callable</string>
+                            <string>editListBox</string>
                             <string>editMatrixBox</string>
                             <string>MARKER</string>
                             <string>kw</string>
diff --git a/product/ERP5Form/ListBox.py b/product/ERP5Form/ListBox.py
index 57762eb5810e33b590296642da7a403140218423..a047c49de64504dd44a0a679d1251ac9ddbbc2cf 100644
--- a/product/ERP5Form/ListBox.py
+++ b/product/ERP5Form/ListBox.py
@@ -2997,42 +2997,10 @@ class ListBoxValidator(Validator.Validator):
             LOG("ListBox FormValidationError",0,str(error_result))
             LOG("ListBox FormValidationError",0,str(errors))
             raise FormValidationError(errors, error_result)
-
-        return ListBoxEditor(field, result)
+        return result
 
 ListBoxValidatorInstance = ListBoxValidator()
 
-class ListBoxEditor:
-  """
-  A class holding all values required to update objects
-  """
-
-  def __init__(self, field, update_dict):
-    self.field = field
-    self.update_dict = update_dict
-
-  def view(self):
-    return self.__dict__
-
-  def __call__(self, REQUEST):
-    pass
-
-  def edit(self, context):
-    if self.update_dict is not None:
-      gv = {}
-      if self.field.has_value('global_attributes'):
-        hidden_attributes = map(lambda x:x[0], self.field.get_value('global_attributes'))
-        for k in hidden_attributes:
-          gv[k] = getattr(request, k, None)
-      for url, v in self.update_dict.items():
-        v.update(gv)
-        ## XXX security check is needed.
-        ## XXX we need to make restricted version of edit method.
-        self.field.restrictedTraverse(url).edit(**v)
-
-allow_class(ListBoxEditor)
-
-
 class ListBox(ZMIField):
   meta_type = "ListBox"