【发布时间】:2013-04-01 22:14:50
【问题描述】:
我正在使用 MyFaces 2.1.9 和 PrimeFaces 3.5。我已经为<p:inputText> 实现了一个自定义渲染器。这适用于 Tomcat。但这不适用于 Websphere。我在自定义渲染器类中放置了断点,但它们从未被命中。我的日志中也没有看到任何内容。但是,当我在标准 JSF <h:inputText> 上注册相同的自定义渲染器时,它可以正常工作。
我在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>
如何解决自定义渲染器的注册问题?
【问题讨论】:
-
从
RenderKit#addRenderer()上的断点开始。 -
谢谢!现在我知道我的渲染器首先被处理,然后常规渲染器出现在 addREnderer 中并覆盖了我的!我该如何解决这个问题?
-
好吧,这确实解释了。你的
faces-config.xml呢?在/WEB-INF/lib的自定义模块JAR 文件中或直接在webapp 的/WEB-INF中?如果在 JAR 中,则加载顺序未定义。如果它是在 PrimeFaces 之前加载的,那么你就会遇到这个问题。 -
它在我的常规网络模块中。这是我的位置:/WEB-INF/spring/faces-config.xml。我用 javax.faces.CONFIG_FILES 上下文参数指向那个 URL。
-
尝试直接在main
/WEB-INF/faces-config.xml中声明。
标签: jsf jsf-2 websphere myfaces custom-renderer