JSF 2.0 + Primefaces: найти все дочерние компоненты определенного типа - PullRequest
3 голосов
/ 18 ноября 2011

У меня есть несколько различных диалоговых окон простых лиц, и я реализовал близкого слушателя, который получает org.primefaces.event.CloseEvent. Внутри этого события закрытия я могу получить доступ к компоненту пользовательского интерфейса, который сгенерировал событие закрытия, org.primefaces.component.dialog.Dialog.

Проблема в том, что мне нужно получить доступ ко всем полям ввода, которые находятся в диалоговом окне. Эти поля ввода могут быть скрыты внутри других компонентов в диалоге. Кто-нибудь знает простой способ (один вызов метода) получить все дочерние компоненты, которые являются рекурсивными полями ввода?

1 Ответ

0 голосов
/ 21 ноября 2011

Вот решение, которое я смог найти самостоятельно:

private void doStuffToInputFields(UIComponent component) {
    if (component instanceof UIInput) {
        UIInput source = (UIInput) component;

        //Add your custom logic here to do stuff with your input fields

        return;
    }

    Iterator<UIComponent> children = component.getFacetsAndChildren();

    if (children != null) {
        UIComponent child = null;

        while (children.hasNext()) {
            child = (UIComponent) children.next();
            resetInputFields(child);
        }
    }
}
...