2016-09-21 3 views
2

동적 인 dataTable이 있는데 열에 따라 다른 필터 유형을 표시하고 싶지만 필터 패싯 내에서 한 번에 하나의 객체 만 사용할 수있는 것처럼 보입니다.JSF dataTable : 조건부 필터 패싯

<f:facet name="filter"> 
    <p:inputText onkeyup="PF('myTable').filter()" rendered="#{column.filterType=='TEXT'}" /> 
    <p:selectOneMenu onchange="PF('myTable').filter()" rendered="#{column.filterType=='LIST'}"> 
    <f:selectItems value="#{column.filterMap}" /> 
    </p:selectOneMenu> 
</f:facet> 

InputText]를하고 selectOneMenus가 제대로 표시됩니다,하지만 난 필터링 할 수 없습니다 : 나는 여러 입력 유형을 사용하려고하면 나는

java.lang.ClassCastException: javax.faces.component.UIPanel cannot be cast to javax.faces.component.ValueHolder 

나의 현재 (작동하지 않는) 코드는 다음과 같습니다 얻을 ClassCast 예외 때문에 내 테이블. 입력 형식 중 하나만 사용하면 필터링이 예상대로 작동합니다.

면에 다른 필터면 또는 입력 유형을 조건부로 표시 할 수 있습니까?

+0

당신이 해결책을 찾았나요 경우 inputTexts처럼 보이게하는 것입니다 발견? 나는 같은 문제를 가지고있다. – ngspkinga

+0

지금까지 어떤 해결책이 있습니까? 내가 가지고있는 같은 문제! –

답변

-1

두 번째 의견에 이어이 코드를 테스트 한 결과 작동합니다. 필터는 열에 따라 달라 지므로 다음과 같이 정의합니다.

<p:column filterBy="#{column.attribute}" filterMatchMode="contains" rendered="#{column.filterType=='TEXT'}" > 
    <f:facet name="filter"> 
     <p:inputText onkeyup="PF('myTable').filter()" /> 
    </f:facet> 
</p:column> 

<p:column filterBy="#{column.attribute}" filterMatchMode="equals" rendered="#{column.filterType=='LIST'}">  
    <f:facet name="filter"> 
     <p:selectOneMenu onchange="PF('myTable').filter()" > 
     <f:selectItems value="#{column.filterMap}" /> 
     </p:selectOneMenu> 
    </f:facet> 
</p:column> 

필터가 아닌 열을 표시하거나 숨길 수 있습니다.

NB : InputText의 필터 모드에는 List가 포함되고 List는 같음입니다.

+0

이름은 "필터"여야합니다. 필터 패싯의 미리 정의 된 이름입니다. 이름을 변경하면 입력 유형이 더 이상 표 머리글에 표시되지 않습니다 ... – aLiEnHeAd

+0

과 협력 중이며 표시됩니다. – bilelovitch

+0

내 동적으로 생성 된 dataTable ...의 헤더에있는 각 열에 대한 필터 여야합니다. primefaces.org/showcase/ui/data/datatable/filter.xhtml – aLiEnHeAd

0

유일한 "솔루션"나는 항상 selectOneMenus를 사용하고 편집하고 필터 유형이 "TEXT"

<p:selectOneMenu onchange="PF('myTable').filter()" editable="#{column.filterType=='TEXT'}" styleClass="#{column.filterType}"> 
+0

span/div에 두 입력을 모두 넣으려고 했습니까? – Kukeltje

+0

해결 방법에 대한 의견을 보내 주셔서 감사합니다. ... 안타깝게도

컨트롤이 필요하므로 나에게 적합하지 않으므로 여러 값을 선택해야합니다. @Kukeltje div/span (둘 다 감싸고 각각 하나씩)로 두 컨트롤을 모두 래핑하려고했습니다. 도움이되지 않았습니다. 다른 생각이 있으십니까? 당신이 가장 좋아하는 것을 공유 할 수 있습니다! –