Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF2.0+;Primefaces:查找特定类型的所有子组件_Jsf_Jsf 2_Primefaces - Fatal编程技术网

JSF2.0+;Primefaces:查找特定类型的所有子组件

JSF2.0+;Primefaces:查找特定类型的所有子组件,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我有几个不同的primefaces对话框,我实现了一个close侦听器,它接收org.primefaces.event.CloseEvent。在这个关闭事件中,我可以访问生成关闭事件的UI组件,org.primefaces.component.dialog.dialog 我的问题是,我需要访问对话框上的所有输入字段。这些输入字段可能隐藏在对话框上的其他组件中。有人知道一种简单的方法(一个方法调用)来递归检索所有作为输入字段的子组件吗?以下是我自己能够想出的解决方案: private void d

我有几个不同的primefaces对话框,我实现了一个close侦听器,它接收
org.primefaces.event.CloseEvent
。在这个关闭事件中,我可以访问生成关闭事件的UI组件,
org.primefaces.component.dialog.dialog


我的问题是,我需要访问对话框上的所有输入字段。这些输入字段可能隐藏在对话框上的其他组件中。有人知道一种简单的方法(一个方法调用)来递归检索所有作为输入字段的子组件吗?

以下是我自己能够想出的解决方案:

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);
        }
    }
}
private void doStuffToInputFields(UIComponent){
if(UIInput的组件实例){
UIInput源=(UIInput)组件;
//在此处添加自定义逻辑以处理输入字段
返回;
}
迭代器children=component.getFacetsAndChildren();
如果(子项!=null){
UIComponent-child=null;
while(children.hasNext()){
child=(UIComponent)childs.next();
重置输入字段(子项);
}
}
}

我认为没有任何方便的方法可以完全满足您的需求。但是,您可以在遍历列表时使用
getChildren
方法和过滤器。