Как программно добавить диалоги с простыми лицами - PullRequest
0 голосов
/ 30 декабря 2011

Я хочу отобразить некоторые данные через компонент списка данных primefaces.Для этого у меня есть arrayList вроде ArrayList<Person>.

Класс person выглядит примерно так

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 в ссылках?

Любая помощь очень важна, ура Николаус

1 Ответ

1 голос
/ 30 декабря 2011

Вы можете попробовать это:

<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;
   }
}
...