筛选几个打开的Faces数据表



我在同一视图页面(overview.xhtml)中有3个openFaces<o:datatable />

  • 第一个显示所有乐队的列表
  • 2d显示音乐乐队创作的所有歌曲的列表
  • 3d显示了音乐乐队的所有演出列表

我使用<o:inputTextFilter />过滤第一个数据表,使用行ID(

<h:form>
        <o:datatable value="#{bandBean.items}" var="band" ........<o:inputTextFilter 
        expression="#{band.id}" .../> 
</h:form>
<h:form>    
    <o:datatable value="#{showBean.items}" var="show" ........<o:inputTextFilter 
        expression="#{band.id}" .../> 
</h:form>
    <h:form>
    <o:datatable value="#{songBean.items}" var="song" ........<o:inputTextFilter 
        expression="#{band.id}" .../> 
</h:form>

歌曲和演出是音乐乐队的小物件。我真正需要的是使用相同的inputTextFilter或类似的东西,因为这3个数据表都有一个带ID的列。

用户永远不会接受先输入三次band idBAND表的波浪号,shows表和第三次用于歌曲表,使用3个过滤器。相反,他想打一次乐队ID,3个表立即被过滤。

一种解决方法是使用三个<o:inputTextFilter />,并使用javascript或ajax设置它们的值:当用户在过滤器中键入内容时,所键入的值会立即附加到其他过滤器中。我想不出那种变通办法。然而,显示3个过滤器而用户应该只使用一个似乎很奇怪。任何想法和帮助都将是宝贵的!

没有直接支持将过滤器附加到多个表,但是您可以模拟这种行为。为此,您可以附加对每个表隐藏("display:none")使用"for"属性,并为所有它们以编程方式。

这里有一个简单的代码片段来演示这个想法:

<o:inputText value="#{MyBean.filterText}"/> 
<o:commandButton value="Submit" action="#{MyBean.filterAllTables}"/> 
<o:inputTextFilter for="table1" expression="#{book.bookTitle}" 
                   value="#{MyBean.filterCriterion}" style="display: none"/> 
<o:inputTextFilter for="table2" expression="#{book.bookTitle}" 
                   value="#{MyBean.filterCriterion}" style="display: none"/> 
<o:dataTable id="table1" ...> 
<o:dataTable id="table2" ...> 

MyBean.java:

private String filterText; // a property w/ getter/setter 
private ExpressionFilterCriterion filterCriterion; // a property w/ getter/setter 
public void filterTables() { 
    String filterText = getFilterText(); 
    SimplePropertyLocatorFactory.SimplePropertyLocator propertyLocator =
                new SimplePropertyLocatorFactory.SimplePropertyLocator("id"); // "id" is a property name by which you'd like to filter
    ExpressionFilterCriterion filterCriterion = new ExpressionFilterCriterion(
                propertyLocator, FilterCondition.CONTAINS, filterText); 
    setFiterCriterion(filterCriterion); 
} 

相关内容

  • 没有找到相关文章

最新更新