Redirecting in Schleife from Jsf Managed Bean

maddos

Mitglied
Hi Leute,

Ich bin neu in sachen JSF.

Ich versuche ein dynamisches Redirect mit verschiedenen Uri's in einer For - Schleife innerhalb der JSF - Backing Bean - Methode zu machen. Leider Funktioniert das nicht so, wie ich es haben will. Nähmlich: es wird nur letzte Uri redirectet. Ich nehme an, es liegt daran, dass wirkliches redirect passiert ausserhalb der Methode. Wenn ihr vielleicht Ideen habt wie das zu realisieren ist, wäre ich sehr dankbar.

Mein Code:

public void Methode() {
...
List<DMFile> files = getDeviceFassade().getFilesToCopyClient(getTempDevice().getPkid());
if (files != null) {
String path = GlobalHelper.getProperty(GlobalHelper.DM_SERVER_URL);
path += GlobalHelper.getProperty(GlobalHelper.DM_FILEDOWNLOAD_URL_PATH);

for (DMFile file: files) {
try {
FacesContext facesContext = FacesContext.getCurrentInstance();
String uri = path + "?id=" + file.getPkid();
facesContext.getExternalContext().redirect(uri);
} catch (Exception e) {
e.printStackTrace();
}
}
}
...
}
 
Weiss es wirklich keiner?
Vielleicht gibt es Alternativen wie man gleichzeitig auf mehrere seiten redirectet wird?
 
Nun ja, Du weißt schon, dass am unteren Ende der Nahrungskette aus deinem Code HTML entsteht, dass von einem Browser interpretiert wird, right?

Also, wie viele redirects kannst Du in einer HTML Seite erzwingen? Genau, einen. Danach hat der Client (der User mit seinem Browser) deine Seite verlassen und Du kannst Ihn nicht zu mehr redirects überreden.

Wie soll denn der Browser auf deine Idee reagieren? Ganz viele neue Fenster aufmachen, um die URLs auf die Du alle redirecten willst darzustellen?

Speicher Dir folgendes in eine HTML Datei und schaue was geschieht, Du landest auf Yahoo.
HTML:
<html>
  <head>
    <meta http-equiv="Refresh" content="0; URL=http://www.google.de" />
    <meta http-equiv="Refresh" content="0; URL=http://www.bing.de" />
    <meta http-equiv="Refresh" content="0; URL=http://www.yahoo.de" />
  </head>
  <body />
</html>
Warum Yahoo und nicht Google, kann ich Dir nicht sagen, wohl aber, dass das konform mit der HTML Specification zu diesem Thema ist.
HTML 5 Specification hat gesagt.:
If another meta element with an http-equiv attribute in the Refresh state has already been successfully processed (i.e. when it was inserted the user agent processed it and reached the last step of this list of steps), then abort these steps.
Evtl. überlegst Du Dir was Du erreichen möchtest und wählst dann ein anderes Mittel ...
 
Zurück