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

Jsf 如何使用PrimeFaces以编程方式将DataList添加到面板?,jsf,primefaces,Jsf,Primefaces,我对PrimeFaces不熟悉,不需要什么帮助。 我想添加动态仪表板,并在每个面板中添加数据列表。 我可以看到带有数据列表的仪表板,但行中没有字符串 谢谢你的帮助 我的代码: Panel panel=(Panel)application.createComponent(fc,"org.primefaces.component.Panel","org.primefaces.component.PanelRenderer"); panel.setId("measure_" + i); panel.

我对PrimeFaces不熟悉,不需要什么帮助。 我想添加动态仪表板,并在每个面板中添加数据列表。 我可以看到带有数据列表的仪表板,但行中没有字符串

谢谢你的帮助

我的代码:

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());
Panel Panel=(Panel)application.createComponent(fc,“org.primefaces.component.Panel”,“org.primefaces.component.PanelRenderer”);
面板setId(“测量”+i);
panel.setHeader(lists.get(i.getName());
面板。可设置为可拾取(真);
面板设置可见(真);
DataList DataList=(DataList)application.createComponent(fc,“org.primefaces.component.DataList”,“org.primefaces.component.DataListRenderer”);
列表测试=新建ArrayList();
测试。添加(“foo”);
测试。添加(“foo2”);
dataList.setValue(测试);
panel.getChildren().clear();
panel.getChildren().add(数据列表);
getDashboard().getChildren().add(面板);
DashboardColumn=model.getColumn(i%getColumnCount());
column.addWidget(panel.getId());

尝试使用值表达式方法:

@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);
...
}
@ManagedBean(name=“bean”)
公共类ManagedBean{
公开列表测试;
//测试的接受者和接受者
...
DataList DataList=(DataList)application.createComponent(fc,“org.primefaces.component.DataList”,“org.primefaces.component.DataListRenderer”);
//构造后方法的初始测试
this.getTest().add(“foo”);
this.getTest().add(“foo2”);
ValueExpression ve=application.getExpressionFactory().createValueExpression(fc.getELContext(),“#{bean.test}”,Collection.class);
dataList.setValueExpression(“值”,ve);
...
}

实际上我没有测试代码线,但我成功地使用了这种方法,我认为它更有用,因为您可以将数据模型绑定到bean,并且不会失去对数据的控制。

我很困惑
Test
是一个
java.util.List
,为什么从
org.primefaces.component.DataList
转换时会出错?我很抱歉,我忘记了另一个变量的getter,并将其称为getTest:D,这是在任何地方使用“Test”的错误做法。。所以它的工作原理和以前一样。。没有变化。我可以看到有一个带1的列表。二,。行中有前缀,但没有类似以下方法的字符串值:
是否在PostConstruct方法上运行代码?或者你在某个事件之后运行它?检查您的代码是否需要一些组件更新,并确保将仪表板放入表单中。