我想重写一个primefaces组件类。因此,我已经在WAR项目的faces-config.xml中注册了组件类。
<component>
<component-type>org.primefaces.component.dnd.Droppable</component-type>
<component-class>com.******.****.****.component.CustomDroppable</component-class>
</component>
这是我的新测试类:
public class CustomDroppable extends Droppable{
@Override
public void queueEvent(FacesEvent event) {
System.out.print("fffffffffffff");
}
}
应用程序是重新构建的,但它使用旧的类。为什么?我还应该怎么做呢?
在<component-type>
中,您应该指定组件类型,而不是组件类。组件类型不一定类似于Java FQN,它可以是任何类型的字符串。通常,你可以在你想要替换的组件类的API文档中找到正确的组件类型。
对于org.primefaces.component.dnd.Droppable
类,定义为常量字段COMPONENT_TYPE
,其值为org.primefaces.component.Droppable
(因此,与组件类相比,没有dnd
"子包")。
修改如下:
<component>
<component-type>org.primefaces.component.Droppable</component-type>
<component-class>...</component-class>
</component>
参见:
- 组件族、组件类型和渲染器类型之间的关系是什么?