Hallo Gemeinde,
ich möchte eine Rücksprungadresse auf einen Stack legen, bevor ich eine MB (Managed Bean) verlasse und eine andere MB aufrufe.
Wenn die andere MB fertig ist, holt sie die Rücksprungandresse vom Stack und springt zur aufrufenden MB zurück.
Der Punkt ist, dass die verwendete MB von mehreren MBs verwendet werden soll und durch den Stack eine flexible Lösung her muss, was den Stack<Type> betrifft.
Das Verfahren habe ich bei Struts mehrfach erfolgreich angewendet, wobei da ein Stack<ActionForward> zum Einsatz kam. Im ActionForward ist der Request und der Action Name abgelegt.
Jetzt habe ich allerdings keine Ahnung, wechen Type ich dem Stack geben soll,
um das Konstrukt mit JSF verwenden zu können.
Ich tendiere zu einem EL-Ausdruck, den ich auf den Stack<String> lege.
Hier ein kurzes Beispiel.
Hat jemand eine Idee oder schon mal etwas ähnliches gemacht?
Ich vermute mal, dass ich auch den Request mit auf den Stack legen muss, wie es bei Struts der Fall ist, um evtl. Parameter aus dem Request holen zu können.
Vielen Dank schon mal für jeden konstruktiven Beitrag!
ich möchte eine Rücksprungadresse auf einen Stack legen, bevor ich eine MB (Managed Bean) verlasse und eine andere MB aufrufe.
Wenn die andere MB fertig ist, holt sie die Rücksprungandresse vom Stack und springt zur aufrufenden MB zurück.
Der Punkt ist, dass die verwendete MB von mehreren MBs verwendet werden soll und durch den Stack eine flexible Lösung her muss, was den Stack<Type> betrifft.
Das Verfahren habe ich bei Struts mehrfach erfolgreich angewendet, wobei da ein Stack<ActionForward> zum Einsatz kam. Im ActionForward ist der Request und der Action Name abgelegt.
Jetzt habe ich allerdings keine Ahnung, wechen Type ich dem Stack geben soll,
um das Konstrukt mit JSF verwenden zu können.
Ich tendiere zu einem EL-Ausdruck, den ich auf den Stack<String> lege.
Hier ein kurzes Beispiel.
Java:
@ManagedBean
public class MasterController{
//in der Klasse ist bekannt, welche Managed Bean benoetigt wird,
private Stack<Type> stackUtil = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("stackUtil");
public void starteSlaveController(){
// wäre hier ein EL-Ausdruck nicht ausreichend, der als String auf den Stack gelegt wird?
stackUtil.push("#{MasterController.rechneWeiter}")
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
ELResolver elResolver = context.getApplication().getELResolver();
SlaveController sc = (SlaveController) elResolver.getValue(elContext, null, "slaveController");
sc.startSlaveController();
}
public String rechneWeiter(){
return "fertig"
}
}
@ManagedBean
public SlaveController{
public void starteSlaveController(){
private Stack<Type> stackUtil = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("stackUtil");
berechne etwas...
//springe zurück zur aufrufenden MB, ohne jedoch den Typ zu kennen
//und hier versagt mein einfacher EL-Ausdruck, der auf dem Stack liegt
//denn zur Auflösung des EL-Ausdruckes benötige ich den Typ der ManagedBean
//so ähnlich wie hier beim Aufruf der SlaveController MB aus der MasterController MB.
stackUtil.pop("#MasterController.weiterRechnen");
}
}
Hat jemand eine Idee oder schon mal etwas ähnliches gemacht?
Ich vermute mal, dass ich auch den Request mit auf den Stack legen muss, wie es bei Struts der Fall ist, um evtl. Parameter aus dem Request holen zu können.
Vielen Dank schon mal für jeden konstruktiven Beitrag!