【发布时间】:2013-12-18 01:41:44
【问题描述】:
我有一个对象列表,每个条目都有一个指向对象详细视图的链接。 链接的代码是
<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>
问题是detail 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;
}
}
【问题讨论】:
-
使用提供的代码很难测试。如果将 bean 更改为
@ViewScoped会发生什么? -
跟
@ViewScoped是一样的... -
养成在视图某处始终使用
<h:messages>的习惯。否则你永远不知道你错过了什么。 -
@BalusC 一如既往的正确提示...
Conversion Error setting value '2013-01-01' for 'null Converter'. Conversion Error setting value '2013-01-31' for 'null Converter'.
标签: jsf-2 viewparams