【发布时间】:2010-03-23 16:45:36
【问题描述】:
我对 JSF 的困惑仍在继续。这是question asked yesterday 的延续,但我觉得它值得提出一个新问题。我有一个单一的接缝组件,它期望注入一个 URL 参数以从方法中检索 List<String>。这在第一次导航到页面时非常有效。 List 用于显示填充<h:form/> 的许多不同的selectOneRadio 组。
现在在提交时,我无法获取要在组件上注入或以其他方式设置的 URL 参数!添加<h:inputHidden/> 会导致FacesExceptions 被抛出。
然后我尝试将List 设置为对象上的实例变量,然后在提交上进行后续调用时(我也不明白为什么这样做)我检查变量是否为非-null:如果不是,则返回它。
现在我发现在提交时创建了一个新的组件实例!!!
getList() called
this.toString(): .BeanAction@5fd98420
#### This is when submit is clicked
getList() called
this.toString(): .BeanAction@22aacbce
组件有以下注解:
Stateful
@Scope(ScopeType.CONVERSATION)
@Name("bean")
@Restrict("#{identity.loggedIn}")
有人可以解释为什么要创建组件的新实例吗? 我真的不太确定如何处理这个问题。我认为 hidden 参数会起作用,因为这就是我使用直接 HTML 的方式,我有点惊讶它不适用于 JSF/Seam。
【问题讨论】: