我正在使用JSF 2.0来构建应用程序。 我想做的是取决于用户是否勾选了复选框,我希望将bean的范围从请求更改为会话..这可能吗?
或勾选复选框后,使用请求范围覆盖默认的“会话”范围...
我尝试了很多研究,但我甚至不确定这是否可行。
感谢。
答案 0 :(得分:1)
在运行时期间无法更改托管bean的范围。但是,您可以在运行时轻松更改bean的行为。
E.g。
@ManagedBean
@RequestScoped
public class MultiScopedBean {
@ManagedProperty("#{requestScopedBean}")
private RequestScopedBean requestScopedBean;
@ManagedProperty("#{sessionScopedBean}")
private SessionScopedBean sessionScopedBean;
private boolean sessionScoped; // Bind this to the checkbox.
// ...
public Object getSomeProperty() {
if (sessionScoped) {
return sessionScopedBean.getSomeProperty();
} else {
return requestScopedBean.getSomeProperty();
}
}
public void setSomeProperty(Object someProperty) {
if (sessionScoped) {
sessionScopedBean.setSomeProperty(someProperty);
} else {
requestScopedBean.setSomeProperty(someProperty);
}
}
// ...
}
是的,它最终会出现在一些模板中,但这就是你得到的奇怪要求。