我的视图上有按钮。当我点击它时,有一个动作处理程序,我从面部上下文获取视图根,然后我得到表单。然后我遍历表单的facets和children,然后查找OutputLabel实例。当我得到它时,我试图从中获取值。但它总是为空,但在渲染页面上有价值。 OutputLabel(p:outputLabel)放在复合组件中...... 我错了什么?一些想法?
//编辑
public void buttonHandler(){
FacesContext facesContext = FacesContext.getCurrentInstance();
UIForm form = facesContext.getViewRoot().findComponent("formId");
List<String> list = new ArrayList<>();
collectLabels(form, list);
}
public void collectLabels(UIComponent component, List<String> list){
Iterator<UIComponent> iterator = component.getFacetsAndChildren();
while(iterator.hasNext()){
UIComponent child = iterator.next();
collectLabels(child, list);
}
if(component instanceof OutputLabel){
list.add(((OutputLabel)component).getValue());
}
}
我现在不上班。所以我现在不记得我的复合组件代码。但它包含<p:outputLabel for="#{cc.attr.id}" value="#{cc.attr.labelValue}" />