私は次のファセットテンプレートを持っています:
<f:metadata>
<o:viewParam name="id" value="#{homeBean.id}" />
</f:metadata>
<h:form>
<h:inputHidden value="#{homeBean.id}" />
<h:inputText value="#{homeBean.user.firstName}" />
<h:commandButton value="Submit" action="#{homeBean.onSave()}" />
</h:form>
およびリクエストスコープのBean:
@Named
@RequestScoped
public class HomeBean {
private Integer id;
private User user;
public void setId(Integer id) {
System.out.println("setId called");
user = // code for loading User entity bean with supplied id
}
// other accessors for id and user
}
最初のページの読み込みは適切に機能し、エンティティが読み込まれてフォームに表示され、inputHiddenがエンティティIDに設定されます。問題は、送信スローです。
javax.el.PropertyNotFoundException - Target unreachable, base expression '. user' resolved to null
おそらく、getUserがsetIdの前に呼び出されたためです。どうすればこれを解決できますか?私は本当にリクエストスコープのBeanが欲しいのですが、これは少なくともviewaccessスコープのBeanで簡単に解決できることを知っています。
編集:プロセス検証フェーズで例外がスローされることに気づきました。最初は、モデル値の更新フェーズで例外がスローされると思いました。「privateUser」を「privateUseruser= new User()」に変更しましたが、今は大丈夫ですが、少し変な感じがします。
よろしく、パベル