2010-03-01 86 views
0

我有一个人类和一个类名。名称包含两个字符串firstName和lastName。 Person包含一个Name对象以及一些额外的信息。如何使用JSF EL访问人员中的firstName和lastName属性。我正在使用带注释的JSF 2.0。如何从JSF中的自定义类中的自定义类访问属性?

我有一个注册页面,我正在创建一个新人。我有一个名为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".

我相信这个错误的事实,我想打电话从Name对象getter/setter方法时,Person对象是茎尚未实例化。

感谢

回答

2

我想你已经给自己的答案:“Person对象还没有实例化”,除非它们被管理的Bean JSF不会为你创建对象。所以你应该在访问名字之前实例化对象Person。您可以在bean实例化时或在导致组件显示的用户操作期间执行此操作。

你可能不想让Person对象管理的bean,但你可以做到这一点,然后把它注入到personBeanhttp://balusc.blogspot.com/2006/06/communication-in-jsf.html#InjectingManagedBeansInEachOther

+0

谢谢!我没有意识到JSF不会实例化我的对象,除非它们被管理。我只是在构造函数中添加了一个初始化。我现在感到很傻! – kgrad 2010-03-01 19:38:40

-1

我也有这个问题。

您的managed-bean-name应该是小写(配置您的faces-config.xml为小写字母并在您的页面中使用它)。

使用#{} personBean.name但没有#{} PersonBean.name

相关问题