Chr*_*ris 11 jsf scope managed-bean
是否可以在同一页面上的回发中保持请求范围的bean活动?
一般的问题是,当bean在请求结束时被删除并在每个表单提交时重新创建,例如动态操作后面的布尔值disabled,readonly并rendered重置为默认值并导致表单不再像预期的那样工作.
Bal*_*usC 16
我假设会话范围不是一个选项,否则这个问题没有意义.
你可以用战斧<t:saveState>来做.在页面的某处添加以下行:
<t:saveState value="#{bean}" />
Run Code Online (Sandbox Code Playgroud)
<a4j:keepAlive beanName="#{bean}" />
Run Code Online (Sandbox Code Playgroud)
或者如果有空间,请升级到至少JSF 2.x并将bean放入视图范围:
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
// ...
}
Run Code Online (Sandbox Code Playgroud)
无论如何,当您回发到同一视图并继续返回null或void从操作方法返回时,同一个bean将存在.
事实并非如此,除非您将 Bean 存储在某个位置,例如应用程序范围内的 Map,以便稍后检索它。
为什么不直接将其设置为会话范围呢?这就是会话范围的用途,因此同一会话期间的多个请求可以达到相同的状态。