我有一个Person类和一个类Name。名称包含两个字符串firstName和lastName。 Person包含Name对象以及一些其他信息。如何使用JSF EL访问person中的firstName和lastName属性。我正在使用带注释的JSF 2.0。
我有一个注册页面,我正在创建一个新人。我有一个名为PersonBean的托管bean,其中包含Person的实例。我试图使用以下标记在我的xhtml页面中设置第一个:#{personBean.person.name.firstName}
。这给了我一个空错误。
确切代码:
<h:inputText label="First Name" id="fname" value="#{personBean.user.name.firstName}"
required="true"/>
确切的错误讯息: "value="#{personBean.user.name.firstName}": Target Unreachable, 'null' returned null".
我认为这个错误源于这样一个事实:当Person对象尚未实例化时,我试图从Name对象调用getters / setter。
由于
答案 0 :(得分:2)
我认为你已经给出了自己的答案:“Person对象尚未实例化”除非它们是托管bean,否则JSF不会为你创建对象。因此,在访问名称之前,应该实例化Person
对象。您可以在实例化bean时或在导致组件显示的用户操作期间执行此操作。
您可能不希望将Person
对象设为托管bean,但您可以这样做,然后将其注入personBean
:http://balusc.blogspot.com/2006/06/communication-in-jsf.html#InjectingManagedBeansInEachOther
答案 1 :(得分:-1)
我也有这个问题。
您的managed-bean-name应该是小写的(将faces-config.xml配置为小写并在页面中使用它。)
使用#{personBean.name} 但不使用#{PersonBean.name}