2014-06-24 7 views
0

현재 현재 SelectOneMenu 선택에 따라 패널의 내용을 동적으로 업데이트해야하는 Primefaces 5.0이 포함 된 JSF 응용 프로그램에서 작업하고 있습니다.
선택한 항목이 변경되면 해당 ID로 패널을 검색하고 현재 하위 구성 요소를 모두 제거하고 새 하위 구성 요소로 바꾼 Java 메소드가 호출됩니다.
이것은 모두 올바르게 작동합니다. 메서드가 호출되고 해당 ID로 패널을 찾았으며 자식 구성 요소가 대체되었습니다. 하지만 어떤 이유에서든 위젯은 UI에 나타나지 않습니다. 나는 HTTP 응답을 검사했고 거기에서도 빠져있다.
아이디어가 있으십니까?Primefaces가 AJAX 업데이트에서 자식 구성 요소를 렌더링하지 않습니다.

<p:panel> 
    <p:selectOneMenu id="artikelFilter" value="#{artikelListController.artikelFilter}" converter="omnifaces.SelectItemsConverter"> 
     <p:ajax event="change" update="createFilterPanel" /> 
     <f:selectItem itemLabel="" itemValue="#{null}" /> 
     <f:selectItems value="#{artikelListController.artikelFilterValues}" /> 
    </p:selectOneMenu> 
    <p:panelGrid id="createFilterPanel" /> 
    <p:commandButton action="#{artikelListController.addArtikelFilter()}" value="Hinzufügen" disabled="#{artikelListController.artikelFilter == null}" style="margin-left: 15px" /> 
</p:panel> 

과 같은 자바 코드 :

는 JSF 코드는 다음과 같습니다 교체

public void setArtikelFilter(final Class<? extends ArtikelFilter> clazz) { 
    PanelGrid createFilterWidget = (PanelGrid) FacesContext.getCurrentInstance().getViewRoot().findComponent("artikelListForm:createFilterPanel"); 

    if (clazz == null) { 
     artikelFilter = null; 
     createFilterWidget.getChildren().clear(); 
    } 
    else if (artikelFilter == null || clazz != artikelFilter.getClass()) { 
     artikelFilter = constructor().in(clazz).newInstance(); 
     createFilterWidget.getChildren().clear(); 
     createFilterWidget.getChildren().addAll(artikelFilter.getCreateFilterWidgets()); 
    } 
} 

답변

0

PrimeFace의 PanelGrid JSF의 내장 HTMLPanelGrid 해결 문제와.

관련 문제