我有一个对象列表,每个条目都有一个指向对象详细视图的链接。链接的代码是
<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 具有使用 getter 和 setter 定义的参数,并且页面也定义了 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 方法之前)参数的 getter 被调用,而不是 setter。
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;
}
}