0

我在我的应用程序中使用 SessionScoped Managed Beans:

@ManagedBean
@SessionScoped
public class SampleBean{

private String value;

//getters and setters

}

我有我的控制器:

@ManagedBean
@SessionScoped
public class SampleController{

@ManagedProperty(value = "#{sampleBean}")
private SampleBean sampleBean;

public String showConfirm() {

return "confirm";

}

public String showComplete() {

return "complete";

}

//getters and setters
}

逻辑是,我有一个启动页面,我在其中输入值。然后进入确认页面,最后进入完成页面。我必须在其余页面中显示在启动页面中输入的数据。

启动页面如下:

启动.xhtml

<h:inputText value="#{sampleBean.value}">
<h:commandLink value="Confirm"  action="#{sampleController.showConfirm()}">

在确认页面中,我想显示此数据。

确认.xhtml

<h:outputFormat value="#{sampleBean.value}">

但是,我没有在这里显示任何值。我尝试将这些值放入showConfirm()方法中的 sessionMap 中。

public String showConfirm() {

FacesContext context = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("sampleBean", sampleBean);

return "confirm";

}

但是,我也无法在 confirm.xhtml 中查看这些值。

只有当我使用<h:outputFormat value="#{sessionScope.sampleBean.value}">时,才会显示这些值。此外,我只想使用SessionScope来执行此操作,因为所有这些都是带有会话的更大应用程序的一部分。有替代方法吗?

4

2 回答 2

0

您的会话范围 bean 应该实现 Serializable 接口才能正常工作看到这个

于 2013-09-20T22:09:20.010 回答
0

您可以通过控制器 bean 从视图中访问 sessionScoped bean:

<h:inputText value="#{sampleController.sampleBean.value}">

在控制器 bean 中添加此托管属性的 getter/setter。

于 2013-09-20T13:45:54.303 回答