Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 如何用自定义类重写primefaces组件api类_Jsf 2_Primefaces_Jsf 2.2 - Fatal编程技术网

Jsf 2 如何用自定义类重写primefaces组件api类

Jsf 2 如何用自定义类重写primefaces组件api类,jsf-2,primefaces,jsf-2.2,Jsf 2,Primefaces,Jsf 2.2,我面临p:treeTable中列的重复ID问题,即与下面链接中描述的问题相同 因此,我想实施上述解决方案中建议的解决方案。所以我想更改源代码,重新编译并使用jar,但我没有这样做的权限。我被要求通过扩展org.primefaces.component.api.UITree类或者在不改变primefaces jar中的实际类的情况下定制该类 现在假设我已经创建了一个名为UITree的类,并为我做了必要的更改。是否仍有注册此类的方法,以便可以使用my类代替primefaces类您有两个选项: 只需

我面临
p:treeTable
中列的重复ID问题,即与下面链接中描述的问题相同

因此,我想实施上述解决方案中建议的解决方案。所以我想更改源代码,重新编译并使用jar,但我没有这样做的权限。我被要求通过扩展
org.primefaces.component.api.UITree
类或者在不改变primefaces jar中的实际类的情况下定制该类

现在假设我已经创建了一个名为UITree的类,并为我做了必要的更改。是否仍有注册此类的方法,以便可以使用my类代替primefaces类

您有两个选项:

  • 只需将它放在WAR项目的Java源文件夹中,保持原始包结构(因此,具有完全相同的FQN)。WAR中的类在类加载上的优先级高于WAR的
    /WEB-INF/lib
    中JAR中的类。因此,如果在WAR中遇到完全相同的类(通过FQN),那么它将从WAR而不是从JAR(在本例中是PrimeFaces’one)加载

  • 的组件类型上的WAR项目的
    faces config.xml
    中注册组件类:

    <component>
        <component-type>org.primefaces.component.TreeTable</component-type>
        <component-class>com.example.component.CustomTreeTable</component-class>
    </component>
    
    
    org.primefaces.component.TreeTable
    com.example.component.CustomTreeTable
    
    同样在这里,在WAR的
    faces config.xml
    中注册的任何组件类都比JAR的
    faces config.xml
    中注册的组件类具有更高的优先级(在本例中为PrimeFaces'one)

  • 您有两种选择:

  • 只需将它放在WAR项目的Java源文件夹中,保持原始包结构(因此,具有完全相同的FQN)。WAR中的类在类加载上的优先级高于WAR的
    /WEB-INF/lib
    中JAR中的类。因此,如果在WAR中遇到完全相同的类(通过FQN),那么它将从WAR而不是从JAR(在本例中是PrimeFaces’one)加载

  • 的组件类型上的WAR项目的
    faces config.xml
    中注册组件类:

    <component>
        <component-type>org.primefaces.component.TreeTable</component-type>
        <component-class>com.example.component.CustomTreeTable</component-class>
    </component>
    
    
    org.primefaces.component.TreeTable
    com.example.component.CustomTreeTable
    
    同样在这里,在WAR的
    faces config.xml
    中注册的任何组件类都比JAR的
    faces config.xml
    中注册的组件类具有更高的优先级(在本例中为PrimeFaces'one)


  • 经过一番努力,我终于想出了解决问题的办法

    我编写了一个类,它扩展了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>  
    
    
    org.primefaces.component.TreeTable
    com.example.component.MyTreeTable
    

    我相信这是最简单的方法,解决了我的问题。回答我自己的问题,这样可以帮助别人。

    经过一番努力,我找到了解决问题的方法

    我编写了一个类,它扩展了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>  
    
    
    org.primefaces.component.TreeTable
    com.example.component.MyTreeTable
    

    我相信这是最简单的方法,解决了我的问题。回答我自己的问题以帮助他人。

    谢谢你的回答。我已经找到了这样做的方法,我相信这也更容易,我把它作为一个答案贴了出来。感谢战争和其他事情。学到了一些新东西:)谢谢你的回答。我已经找到了这样做的方法,我相信这也更容易,我把它作为一个答案贴了出来。感谢战争和其他事情。学到了一些新东西:)