Hallo zusammen,
ich arbeite zZt. an einer Variante beim Erstellen von Dokumenten im TabContainer, bei der folgendes passieren soll:
- User klickt auf "erstellen" und gibt die Daten ein
- User klickt auf speichern, Daten werden in einer Managed Bean gespeichert (funktioniert soweit)
- automatisch wird ein neues Tab geöffnet mit dem eben erstellten Dokument im Anzeigemodus
- der alte Tab schliesst sich
Dieser angestrebte Tab-Wechsel ergibt sich dadurch, dass wir fürs Anlegen bzw. Anzeigen von Dokumenten verschiedene Custom Controls benutzen.
Nun bin ich auf das Problem gestoßen, dass das Speichern der Bean nur bei einem full refresh (<xp:eventHandler event="onclick" submit="true">) funktioniert, die Tab-Operationen wiederum nur bei einem partial refresh (<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="tab_wrapper" execMode="partial">). Bisher habe ich es trotz tagelangem Rumprobieren nicht hinbekommen, dass beide Aktionen ausgeführt werden.
Hier die beiden Event Handler:
<xp:eventHandler event="onclick" submit="true">
<xp:this.action>
<![CDATA[#{javascript: viewScope.put("temp_employee_id",hrmEmployee.save(getComponentValue('txt_employee_costcenter')));}]]>
</xp:this.action>
</xp:eventHandler>
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="tab_wrapper" execMode="partial">
<xp:this.action>
<![CDATA[#{javascript:openContainerTab(viewScope.get("temp_employee_id"), "fm_hrm_employee", "openDocument");}]]>
</xp:this.action>
</xp:eventHandler>
Die Methode hrmEmployee.save(...) speichert die Bean und gibt die NoteID des neu erzeugten Dokuments zurück, mit der dann das neue Tab aufgemacht werden soll.
Wie kann ich den zweiten Event Handler nach Abschluss des ersten anstossen?