我的一个JSF通过元数据和f:ViewParm标签接收参数。我在预渲染视图中的辅助bean中使用这些参数来查询数据库并构建我的数据表视图列表。它工作正常,但现在我需要切换到lazyDataModel(我正在使用Primefaces 3.2)。如果我按照示例,那么我需要实现LazyDataModel,它在辅助bean的构造函数中完成。我可以这样做,但后来我无法访问参数。我的问题是如何获取参数并传递给实现LazyDataModel的类(比如LazyCarDataModel)。我想在LazyCarDataModel的重写加载方法中使用这些参数。我无法在构造函数中访问传入参数。任何建议/技巧来处理这种情况将不胜感激。
彼得
答案 0 :(得分: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);
}
您也可以在数据表的getter中引入延迟加载。
public DataModel<Something> getModel() {
if (model == null) {
model = buildSomehowBasedOn(car);
}
return model;
}