オブジェクトのリストがあり、各エントリにはオブジェクトの詳細ビューへのリンクがあります。リンクのコードは
<h:link outcome="#{detailViewPageName}" rendered="#{listRow.rowData.dbId != null}">
<f:param name="faces-redirect" value="true" />
<f:param name="phoneNr" value="#{listRow.rowData.phoneNr}" />
<f:param name="fromDate" value="#{listRow.rowData.fromDate}" />
<f:param name="toDate" value="#{listRow.rowData.toDate}" />
#{listRow.rowData.phoneNr == "-1" ? msg.subscriptionPhoneNumberUnknown : listRow.rowData.phoneNr}
</h:link>
そして元。結果のリンクは次のとおりです。
詳細ビューの Bean にはゲッターとセッターで定義されたパラメーターがあり、ページには f:viewparam も定義されています。
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="phoneNr" value="#{billDetailController.model.phoneNr}"/>
<f:viewParam name="fromDate" value="#{billDetailController.model.fromDate}"/>
<f:viewParam name="toDate" value="#{billDetailController.model.toDate}"/>
<f:event listener="#{billDetailController.selectData}" type="preRenderView" />
</f:metadata>
</ui:define>
問題は、詳細 Bean の値が設定されないことです...
デバッガーで見たのは、リンクをクリックした後 (ページが読み込まれて selectData メソッドが呼び出される前だと思います)、パラメーターのゲッターが呼び出されますが、セッターは呼び出されません。
Bean は ManagedBean および CustomScoped です。
何が恋しいですか?
編集:
Bean (非常に簡単なもの):
@ManagedBean( name = "billDetailModel" )
@ViewScoped
public class BillDetailModel extends DetailModel
{
private String phoneNr;
private Date fromDate;
private Date toDate;
public String getPhoneNr()
{
return phoneNr;
}
public void setPhoneNr( String phoneNr )
{
this.phoneNr = phoneNr;
}
public Date getFromDate()
{
return fromDate;
}
public void setFromDate( Date fromDate )
{
this.fromDate = fromDate;
}
public Date getToDate()
{
return toDate;
}
public void setToDate( Date toDate )
{
this.toDate = toDate;
}
}