如何使用自定义类覆盖 primefaces 组件 api 类

Sri*_*nji 0 primefaces jsf-2 jsf-2.2

我正面临列问题的重复 ID,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类

Bal*_*usC 5

您有 2 个选择:

  1. 把它放在WAR项目的Java源文件夹中,保持原来的包结构(因此,具有完全相同的FQN)。WAR 中的类在类加载方面比 WAR 中的 JAR 中的类具有更高的优先级/WEB-INF/lib。因此,如果在 WAR 中遇到完全相同的类(通过 FQN),那么它将从 WAR 而不是从 JAR(在这种特殊情况下,PrimeFaces 的一个)加载。

  2. faces-config.xmlWAR 项目<p:treeTable>的组件类型上注册组件类:

    <component>
        <component-type>org.primefaces.component.TreeTable</component-type>
        <component-class>com.example.component.CustomTreeTable</component-class>
    </component>
    
    Run Code Online (Sandbox Code Playgroud)

    同样在这里,在 WAR 中注册的任何组件类faces-config.xml都比 JAR 中的组件类具有更高的优先级faces-config.xml(在这种特殊情况下,PrimeFaces 的组件类)。