我有一个SessionScoped ManagedBean。 我想重置这个bean的所有值。我正在使用JSF 2.1.0-b03
@ManagedBean(name = "myBean")
@SessionScoped
public class MyBean implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
}
现在,我有了方法,它将所有值重置为null。但我不喜欢这个解决方案。
private void unboundValue() {
name= null;
}
如何从SessionScoped ManagedBean中取消绑定值?
答案 0 :(得分:2)
手动重置似乎是正确的方法。如果要使整个会话无效,而不只是一个bean,请调用session.invalidate()
。如果它只是一个bean,则手动字段重置就可以了。
答案 1 :(得分:0)
我认为您可以从 ExternalContext 的会话映射中删除 SessionScoped managedbean。下次访问bean时,将使用默认值创建一个新bean,或者您只需创建一个新bean并将其插入到会话映射中,然后替换旧。 当然这个过程有点开销,但是如果你有很多需要重置的值,那可能就是一个解决方案。
否则你需要某种 reset / unboundValue()方法,就像你已经说过的那样。