nameという文字列プロパティを持つUserという管理対象Beanがあります。
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Userタイプのプロパティを持ち、ユーザーリストにユーザーを追加できるUserManagerという別のマネージドBeanがあります。
public class UserManager {
private List<User> userList = new ArrayList<User>();
private User user;
public User getUser() {
return this.user;
}
public void setUser(User user) {
this.user = user;
}
public String addUser() {
userList.add(user);
return "_USERADDED";
}
}
ユーザーを追加するJSFページは次のようになります。
<h:form>
<h:inputText value="#{userManager.user.name}"/>
<h:commandButton value="Add User" action="#{userManager.addUser}"/>
</h:form>
私が抱えている問題は、ページを実行して[ユーザーの追加]ボタンをクリックすると、次のエラーが発生することです。
adduser.xhtml @ 11,50 value = "#{userManager.user.name}":Target Unreachable、'null' return null
このエラーは、UserManagerのユーザープロパティがnullであり、プロパティ名を設定するためにアクセスしようとしていることが原因であると想定しています。
UserManagerを変更し、ユーザープロパティを初期化すると、これを機能させることができます。
private User user = new User();
私の質問は、これはプロパティを初期化する正しい方法ですか、それともJSFファイルや構成ファイル内から実行できますか?