Jsf PrimeFaces组件的自定义呈现器在Tomcat中运行良好,但在Websphere中不起作用

Jsf PrimeFaces组件的自定义呈现器在Tomcat中运行良好,但在Websphere中不起作用,jsf,jsf-2,websphere,myfaces,custom-renderer,Jsf,Jsf 2,Websphere,Myfaces,Custom Renderer,我正在使用MyFaces2.1.9和PrimeFaces3.5。我已经为实现了一个自定义渲染器。这在家里和Tomcat一起工作很好。但这在Websphere中不起作用。我在自定义渲染器类中放置了断点,但它们从未被命中。我在日志中也看不到任何东西。但是,当我在标准JSF上注册相同的自定义渲染器时,它就可以正常工作了 我在faces config.xml中注册了它,如下所示: <render-kit> <renderer> <component-

我正在使用MyFaces2.1.9和PrimeFaces3.5。我已经为
实现了一个自定义渲染器。这在家里和Tomcat一起工作很好。但这在Websphere中不起作用。我在自定义渲染器类中放置了断点,但它们从未被命中。我在日志中也看不到任何东西。但是,当我在标准JSF
上注册相同的自定义渲染器时,它就可以正常工作了

我在
faces config.xml
中注册了它,如下所示:

<render-kit>
    <renderer>
        <component-family>org.primefaces.component</component-family>
        <renderer-type>org.primefaces.component.InputTextRenderer</renderer-type>
        <renderer-class>xxx.xxx.xxx.MyInputRenderer</renderer-class>
    </renderer>
</render-kit>

org.primefaces.component
org.primefaces.component.InputExtrender
xxx.xxx.xxx.MyInputRenderer

如何解决自定义渲染器的注册问题?

需要覆盖第三方组件库渲染器的自定义渲染器需要在webapp自己的
faces config.xml
中注册,而不是在
faces config.xml
中注册,后者也打包在
/WEB-INF/lib
的另一个JAR中。JAR文件的加载顺序未指定,因此可能会发生这样的情况,即在您要覆盖的第三方组件库之前加载并注册自定义渲染器,就像您所面对的一样。

RenderKit#addRenderer()
上的断点开始。谢谢!现在我知道我的渲染器首先被处理,然后常规渲染器出现在addREnderer中并覆盖我的渲染器!我怎样才能解决这个问题?好吧,这就解释了。你的
faces config.xml在哪里?在
/WEB-INF/lib
中的自定义模块JAR文件中,还是直接在webapp的
/WEB-INF
中?如果在JAR中,则加载顺序未定义。如果它是在PrimeFaces 1之前加载的,那么你就会遇到这个问题。它在我的常规web模块中。这是我的位置:/WEB-INF/spring/faces-config.xml。我用javax.faces.CONFIG_FILES上下文参数指向该URL。尝试直接在main
/WEB-INF/faces CONFIG.xml
中声明它。