f:未在bean中设置viewparam

时间:2013-12-02 11:05:34

标签: jsf-2 viewparams

我有一个对象列表,每个条目都有一个指向对象详细信息视图的链接。 链接的代码是

<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>

和前。得到的链接是:

  

http://bla-bla.bla/cmn-web/view/cmn/billDetailView.xhtml?faces-redirect=true&phoneNr=41798009726&fromDate=2013-01-01&toDate=2013-01-31

详细信息视图的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;
  }
}

1 个答案:

答案 0 :(得分:1)

也许在JSFs Update-Phase期间检查是否有ConverterExceptions。如果你是尝试将日期设置为期望Date或Calendar-Object的getter / setter,如果没有正确的DateConverter,这可能无效。

希望有帮助...