学生の名前を含むタブを持つアコーディオン パネルがあります。タブの 1 つを選択し、[編集] を選択します。タブ変更リスナーを呼び出して学生オブジェクトを取得し、それを編集しようとするとうまくいきます。
しかし、私の問題は、タブで選択して編集をクリックしても、アコーディオンが初めてロードされたときに、学生オブジェクトが取得されないことです。nullポインター例外が発生します。タブの変更イベントは、初めて読み込まれるときに呼び出されないためです。これを解決するにはどうすればよいですか?
private StudBean formBean;
public StudBean getFormBean() {
if(formBean==null){
formBean= new StudBean();
}
return formBean;
}
public void onTabChange(TabChangeEvent event) {
formBean = (StudBean) event.getData();
}
public String edit(){
formBean = testDelegate.getDetails(formBean.getName(),formBean.getId());
return "/ui/EditStudent?faces-redirect=true";
}
<p:commandButton process="@this" value="edit" action="#{testBean.edit}" >
<p:accordionPanel value="#{testBean.students}" var="stud">
<p:ajax event="tabChange" listener="#{testBean.onTabChange}" immediate="true"/>
<p:tab title="#{stud.name}">