JSF2.0+;Primefaces:查找特定类型的所有子组件
我有几个不同的primefaces对话框,我实现了一个close侦听器,它接收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
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
方法和过滤器。