Java 具有搜索功能的TreeModelAdapter
我现在正在使用Tapestry 5.3,并使用一个树组件来显示帐户列表的层次结构,它有4个级别。但现在,我正在与这种情况下的搜索功能作斗争:Java 具有搜索功能的TreeModelAdapter,java,tapestry,Java,Tapestry,我现在正在使用Tapestry 5.3,并使用一个树组件来显示帐户列表的层次结构,它有4个级别。但现在,我正在与这种情况下的搜索功能作斗争: Level 1-1 |_ _ _ Level 2-1 |_ _ _ Level 2-2 |_ _ _ Level 3-1 |_ _ _ Level 3-2 | |_ _ _ Level 4-1 | |_ _ _ Level 4-2 |_ _ _ Level 3-3
Level 1-1
|_ _ _ Level 2-1
|_ _ _ Level 2-2
|_ _ _ Level 3-1
|_ _ _ Level 3-2
| |_ _ _ Level 4-1
| |_ _ _ Level 4-2
|_ _ _ Level 3-3
比如说。用户想要搜索4-1级帐户,树应该如下所示
Level 1-1
|_ _ _ Level 2-2
|_ _ _ Level 3-2
|_ _ _ Level 4-1
有人能帮我做些逻辑方面的事吗?谢谢。我终于明白了 我创建了一个新类
AccountTreeModelAdapter
,它是实现的。您可以重写getChildren
方法并将搜索逻辑放在那里。对我来说,它在这个流程中工作:
- 在
AccountTreeModelAdapter
- 从主类中设置它的值
- 在
方法中,使用getChildren
迭代整个列表(所有帐户),并逐个与Iterator
列表中每个帐户的代码进行比较(在Java 8中使用searchedAccounts
)searchedAccounts.stream().filter()
accountPath
。因此,每次用户创建帐户时,此accountPath
的工作方式如下:
Account "ABC" (ID: 1)
|_ _ _ "XYZ" (ID: 2)
|_ _ _ "OPQ" (ID: 3)
|_ _ _ "STU" (ID: 4)
帐户“ABC”将没有路径(因为它是根)。
帐户“XYZ”将具有路径-1-
帐户“OPQ”将具有路径-1-2-
帐户“STU”将具有路径-1-2-3-
要获取每个父项的ID,请使用string.split(“-”)
因此,如果希望树显示父帐户,只需将父帐户添加到searchedAccounts
列表中即可
就这些。最后,我终于明白了 我创建了一个新类
AccountTreeModelAdapter
,它是实现的。您可以重写getChildren
方法并将搜索逻辑放在那里。对我来说,它在这个流程中工作:
- 在
AccountTreeModelAdapter
- 从主类中设置它的值
- 在
方法中,使用getChildren
迭代整个列表(所有帐户),并逐个与Iterator
列表中每个帐户的代码进行比较(在Java 8中使用searchedAccounts
)searchedAccounts.stream().filter()
accountPath
。因此,每次用户创建帐户时,此accountPath
的工作方式如下:
Account "ABC" (ID: 1)
|_ _ _ "XYZ" (ID: 2)
|_ _ _ "OPQ" (ID: 3)
|_ _ _ "STU" (ID: 4)
帐户“ABC”将没有路径(因为它是根)。
帐户“XYZ”将具有路径-1-
帐户“OPQ”将具有路径-1-2-
帐户“STU”将具有路径-1-2-3-
要获取每个父项的ID,请使用string.split(“-”)
因此,如果希望树显示父帐户,只需将父帐户添加到searchedAccounts
列表中即可
就这些