2012-04-06 19 views
0

我的一個JSF通過元數據和f:ViewParm標籤接收參數。我在預渲染視圖的backing bean中使用這些參數來查詢數據庫併爲數據表視圖構建我的列表。它工作正常,但現在我需要切換到lazyDataModel(我使用Primefaces 3.2)。如果我遵循這些示例,那麼我需要實現LazyDataModel,這是在backing bean的構造函數中完成的。我可以這樣做,但後來我無法訪問參數。我的問題是如何獲取參數並傳遞給實現LazyDataModel的類(比如LazyCarDataModel)。我想在LazyCarDataModel的重載方法中使用這些參數。我無法在構造函數中訪問傳入參數。任何建議/技巧來處理這種情況將不勝感激。將參數傳遞給實現LazyDataModel的類

彼得

回答

1

你可以使用<f:event type="preRenderView">視圖參數設定後調用後臺bean的方法。

E.g.

<f:metadata> 
    <f:viewParam name="carId" value="#{bean.car}" converter="#{carConverter}" /> 
    <f:event type="preRenderView" listener="#{bean.init}" /> 
</f:metadata> 

private Car car; 
private transient DataModel<Something> model; 

public void init() { 
    model = buildSomehowBasedOn(car); 
} 

你可以備選地也DataTable中的吸氣劑引入延遲加載。

public DataModel<Something> getModel() { 
    if (model == null) { 
     model = buildSomehowBasedOn(car); 
    } 

    return model; 
} 
+1

非常感謝你,祝你有個美好的週末。你的幫助總是受到許多人的讚賞。 – Peter 2012-04-06 14:17:43