如何使用PrimeFaces以编程方式将DataList添加到面板?

时间:2014-12-11 23:37:49

标签: jsf primefaces

我是PrimeFaces的新手,我需要一些帮助。 我想添加动态仪表板并在每个面板中添加datalist。 我可以看到带有数据列表的仪表板,但行中没有字符串。

感谢您的帮助

我的代码:

Panel panel=(Panel)application.createComponent(fc,"org.primefaces.component.Panel","org.primefaces.component.PanelRenderer");

panel.setId("measure_" + i);
panel.setHeader(lists.get(i).getName());
panel.setToggleable(true);
panel.setVisible(true);

DataList dataList = (DataList) application.createComponent(fc, "org.primefaces.component.DataList", "org.primefaces.component.DataListRenderer");

List<String> test = new ArrayList();
test.add("foo");
test.add("foo2");

dataList.setValue(test);
panel.getChildren().clear();
panel.getChildren().add(dataList);

getDashboard().getChildren().add(panel);

DashboardColumn column = model.getColumn(i%getColumnCount());

column.addWidget(panel.getId());

1 个答案:

答案 0 :(得分:0)

尝试使用值表达式方法:

@ManagedBean(name="bean")
public class ManagedBean{
public List<String> test;
//getter and setter of test
...
DataList dataList = (DataList) application.createComponent(fc, "org.primefaces.component.DataList", "org.primefaces.component.DataListRenderer");

//init test on PostConstruct Method
this.getTest().add("foo");
this.getTest().add("foo2");
ValueExpression ve = application.getExpressionFactory().createValueExpression(fc.getELContext(), "#{bean.test}", Collection.class);
dataList.setValueExpression("value", ve);
...
}

实际上我并没有测试那些代码行,但我成功地使用了这个approch,我觉得它更有用,因为你可以将datamodel绑定到bean并且不会失去对数据的控制。