我想添加一個過濾器到JSF中現有的rich:datatable中每列的頭部。我使用Exadel演示來添加過濾器,這很好,但它也從上部標頭中刪除了排序功能。我想保留在上面的標籤頭的排序功能,並在第二個inputText頭過濾。JSF - Richfaces 3.3.3豐富的數據表 - 用兩個頭文件進行排序和過濾?
作爲一個快速和骯髒的例子,這是基本的結構:
<rich:dataTable id="thetable" value="#{stuff.list}" var="s">
<f:facet name="header">
<rich:columnGroup>
<rich:column sortBy="#{s.field1}">
<h:outputText="Field 1" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column>
<f:facet name="header">
<h:inputText value="#{stuffSorter.field1}">
<a4j:support event="onkeyup" reRender="thetable" ignoreDupResponses="true"
requestDelay="700" onComplete"setCaretToEnd(event);" />
</h:inputText>
</f:facet>
</rich:column>
</rich:dataTable>
將會有更多的列,當然,和setCaretToEnd僅僅是一個JavaScript函數,保持插入符號在列的末尾過濾。這幾乎是正確的。我得到兩個標題。最上面的那個是列標籤,下面的是過濾器,結果在下面列出。我已經建立了過濾類,它的工作非常出色。但是,我似乎無法找到一種方法將排序函數返回到最頂端的標題。如果我將「sortBy」字段放在過濾器框旁邊,它確實有效,但我寧願將它放在上面,但似乎插入到過濾器列中的數據正在阻止該字段。
我在這裏丟失了什麼,或者這是不完全可能與一個豐富的:dataTable?我會在名稱+排序方面行得通,然後在同一個頭文件中將過濾器放在彼此的頂部,但是我也沒有運氣。試圖將兩個元素放到構面(outputText和inputText)中時,即使使用s:div單獨包裝它們,也不會顯示outputText。我將使用一個bean進行排序,但奇怪的是,我正在使用的項目使用Richfaces 3.3.3,缺少org.richfaces.component.SortOrder,儘管Richfaces-ui-3.3中有許多其他項目0.3-final.jar。