我想通过primefaces datalist组件显示一些数据。为了实现这一点,我有一个像ArrayList<Person>
这样的arrayList。
人类看起来像这样
class Person{
private String name;
private String age;
private ArrayList<String> hobbies;
}
要显示我使用以下代码的数据:
<p:dataList value="{gameBean.persons}" var="person" itemType="disc">
Name: #{person.getName()}, Age: #{person.getAge()},
<h:link value="Hobbies" onclick="dlg1.show();" />
</p:dataList>
我现在要做的是创建一个链接,在点击时打开一个对话框:
<p:dialog header="Hobbies" widgetVar="dlg1" modal="true"height="100">
//iterate through hobbies list to print it
</p:dialog>
到目前为止,这是有效的,因为我已经在xhtml文件中硬编码了如上所述的对话框。
这种方法当然不适用于动态数量的人,因为我无法对对话框和链接进行硬编码。我的问题是,如何以编程方式创建此对话框并将正确的widgetVar变量分配给链接的onClick方法?
任何帮助都是高度关注的, 欢呼尼古拉斯
答案 0 :(得分:1)
你可以试试这个:
<h:form id="form">
<p:dataList value="{gameBean.persons}" var="person" itemType="disc">
Name: #{person.getName()}, Age: #{person.getAge()},
<p:column>
<p:commandLink value="Hobbies" actionListener="#{gameBean.onPersonSelect(person)}"
oncomplete="dlg1.show();" update=":form:hobbiesDlg" />
</p:column>
</p:dataList>
<p:dialog header="Hobbies" id="hobbiesDlg" widgetVar="dlg1" modal="true"height="100">
//iterate through hobbies of gameBean.person to show here
</p:dialog>
</h:form>
@ManagedBean
@ViewScoped
public class GameBean {
private Person person;
public void onPersonSelect(Person person) {
this.person = person;
}
}