输入字段框在所有页面中都填充#{ad.userid}
。即使我输入有效值,当在操作方法中访问时,它们在托管bean中提供null
值。怎么会发生这种情况,我该如何解决这个问题?
答案 0 :(得分:2)
这可能是因为immediate="true"
中h:commandButton
不必要,或者在输入字段中使用rendered
,disabled
或readonly
属性(或者一个)它的父组件)取决于请求范围的bean,后者在后续请求中没有正确保留。有更多可能的原因,但这太多了,无法提及。前面提到的至少是初学者中最常见的原因。
要了解有关JSF生命周期的更多信息,以便您可以更好地了解“幕后”发生的事情,以便您可以更好地确定自己,请查看以下文章:Debug JSF lifecycle
答案 1 :(得分:2)
我有同样的问题。在我的例子中,我在我的bean中使用了这些导入:
import javax.faces.bean.RequestScoped;
import javax.inject.Named;
@Named(value = "fooBean")
@RequestScoped
public class FooBean {
...
}
而不是:
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
答案 2 :(得分:0)
我正面对这样的事情,当我用
时它就解决了<p:ajax event="change" update="componenet_ID" process="@form" listener="#{ManagedBeen.action}" />
答案 3 :(得分:0)
在我的情况下,输入值是null,因为该对象被应用程序替换为其他对象。因此,我们正在提交另一个对象。
我们在动态的懒惰列表中工作,所以我们遇到了这个问题。