Ich versuche, ein Objekt übergeben, während zwischen View1 zu View2, JSF und Primefaces umleiten.Flash-Bereich Warnung und Flash nicht nach Umleitung löschen
Ich verwende JSF-Flash Umfang so zu tun, die Aufgabe auf die zweite Ansicht kann passieren, aber ich bin noch immer diesen Warnning:
com.sun.faces.context.flash.ELFlash setCookie
WARNUNG: JSF1095: Die Antwort wurde bereits festgeschrieben, als wir versuchten, den ausgehenden Cookie für den Flash zu setzen. Alle im Flash gespeicherten Werte sind bei der nächsten Anfrage nicht verfügbar.
und der Flash-Cookie wird nicht auch nach paar Umleitungen gelöscht.
View1.xhtml
<ui:composition xmlns=...... template="../../../BaseTemplate.xhtml">
<ui:define name="templateContent">
<mm:MyComponent />
</ui:define>
</ui:composition>
MyComponent.xhtml
<html xmlns= ......>
<composite:interface componentType="usersListComponent">
</composite:interface>
<composite:implementation>
<h:form>
<p:commandButton action="#{cc.passObject}" value="passMyObject" />
</h:form>
</composite:implementation>
</html>
MyComponent.java
@FacesComponent("myComponent")
public class MyComponent extends UIComponentBase {
private MyObject objectToPass;
public String passObject() {
ExternalContext externalContext= FacesContext.getCurrentInstance().getExternalContext();
externalContext.getFlash().put("objectToPass", objectToPass);
return "View2";
}
}
View2Controller.java
@ManagedBean
@ViewScoped
public class View2Controller implements Serializable {
@PostConstruct
public void init() {
MyObject ob = (MyObject) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("objectToPass");
......Do Something with MyObject
}
}
GELÖST !!!!!!
Ich bin nicht sicher this der beste Weg ist, aber es funktionierte für mich ..
Das Problem ist in der http-Puffergröße und JSF-Lebenszyklus, die Cookies geschrieben werden, nachdem die Antwort geschrieben und den Puffer ist zu klein, um beide zu enthalten.
Welche JSF Impl/Version? –
jsf-api: 2.2.13 jsf-impl: 2.2.13 –