筛选几个打开的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>
歌曲和表演是乐队的子对象。 我真正需要的是能够使用过滤3个数据表的功能 相同的inputTextFilter或类似的东西,因为3个数据表的每个列都有band ID。 用户将永远不会接受三次键入乐队ID BAND表的tilme,shows表和第二次的tilme 歌曲表第三次使用3个过滤器。相反,他想打一次乐队 ID,并立即过滤3个表。 一种解决方法是使用三个
<o:inputTextFilter />
并使用javascript或ajax设置其值:当用户在过滤器中键入内容时,所键入的值会立即附加到其他过滤器中。我不知道这种解决方法。但是显示3个过滤器而用户只能使用一个过滤器似乎很奇怪。 任何想法和帮助都是宝贵的!     
已邀请:
        不直接支持将过滤器附加到多个表, 但是,您可以模拟这种行为。为此,您可以附加一个 隐藏(\“显示:无\”)到每个表 使用\“ 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); 
} 
    

要回复问题请先登录注册