我在p:treeTable
面临列重复的问题,即下面链接中描述的相同问题
http://forum.primefaces.org/viewtopic.php?f=3&t=31158&p=99463#p99463
所以我想按照上面的解决方案的建议实现解决方案。所以我想改变源代码并重新编译并使用jar但我还没有获得同样的许可。我被要求通过扩展org.primefaces.component.api.UITree
类来自定义类,或者不改变primefaces jar中的实际类。
所以现在假设我已经创建了一个具有相同名称UITree的类,并为我做了必要的更改。无论如何都要注册这个类,以便我的类可以用来代替primefaces类
答案 0 :(得分:3)
你有两个选择:
只需将其放在WAR项目的Java源文件夹中,保持原始包结构(因此,具有完全相同的FQN)。 WAR中的类优先于WAR /WEB-INF/lib
中JAR中的类加载优先级。因此,如果在WAR中遇到完全相同的类(通过FQN),那么它将从WAR而不是从JAR加载(在这种特殊情况下,PrimeFaces的一个)。
在faces-config.xml
的组件类型的WAR项目的<p:treeTable>
中注册组件类:
<component>
<component-type>org.primefaces.component.TreeTable</component-type>
<component-class>com.example.component.CustomTreeTable</component-class>
</component>
此外,在WAR faces-config.xml
中注册的任何组件类优先于JAR faces-config.xml
中的组件类(在此特定情况下,PrimeFaces中的组件类)。
答案 1 :(得分:0)
经过一番努力,我找到了解决问题的方法
我编写了一个类,它扩展了如下所示的primefaces TreeTable
类,并实现了链接中指定的方法visitColumns
(在我的问题中给出)。
您必须覆盖子类中调用visitColumns
方法的所有方法。
现在将其注册到faces-config.xml中,如下所示
<component>
<component-type>org.primefaces.component.TreeTable</component-type>
<component-class>com.example.component.MyTreeTable</component-class>
</component>
我相信这是最简单的方法并解决了我的问题。回答我自己的问题,这样可以帮助别人。