Session 在JSF2.0中跨屏幕保留值

Session 在JSF2.0中跨屏幕保留值,session,jsf-2,Session,Jsf 2,我正在从事JSF2.0项目,在这个项目中,我需要从前面的屏幕中获取backingbean中的值,我已经在下面进行了解释 我的第一屏 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" > <h:body> <h:form> <h:outputText value="LocationID" /> &l

我正在从事JSF2.0项目,在这个项目中,我需要从前面的屏幕中获取backingbean中的值,我已经在下面进行了解释

我的第一屏

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
>
<h:body>
    <h:form>
        <h:outputText value="LocationID" />
        <h:inputText value="#{getDetails.locationID}"/>
        <h:commandButton value="Add OS" action="#{getDetails.addOSDetails}"/>
    </h:form>
</h:body>
 </html>
我的第二个屏幕是addOS

<html xmlns="http://www.w3.org/1999/xhtml"  
xmlns:h="http://java.sun.com/jsf/html"  
>
<h:body>
    <h:form>
        <h:outputText value="Enter Value" />
        <h:inputText value="#{addOS.addValue}"/>
        <h:commandButton value="Add OS" action="#{addOS.save}"/>
    </h:form>
</h:body>
 </html>
}

我不希望在会话中设置值。可以使用

请给我一些想法和帮助


谢谢。

如果您真的想转发,就像您在问题中所做的那样,在呈现第二页时,第一页上提交的数据已经存在:请记住,转发是在相同的HTTP请求中完成的。因此,您最终需要的是为SubquesNT POST请求保留值。例如,您可以将信息存储在第二页的隐藏字段中:

<h:inputHidden value="#{getDetails.locationID}" />
通过这种方式,在最近的页面上,它将在flash地图中提供,因此

#{flash.locationID}
在EL范围内和

(String)FacesContext.getCurrentInstance().getExternalContext()
                    .getFlash().get("locationID");

在Java代码中。

如果希望在多个视图中使用属性,则应将其存储在SessionScope中
public String action() {
    ...
    FacesContext.getCurrentInstance().getExternalContext().getFlash().put("locationID", locationID);
    return "result?faces-redirect=true";
}
#{flash.locationID}
(String)FacesContext.getCurrentInstance().getExternalContext()
                    .getFlash().get("locationID");