广播组的XPage渲染器将所有内容放入表中,基本上非常糟糕。我正在尝试使用自定义渲染器修复此问题。我已经尝试了很多东西但是现在我被卡住了,因为我没有任何信息可以进一步发展。
我的渲染器在faces-config中声明如下:
<renderer>
<component-family>javax.faces.SelectOne</component-family>
<renderer-type>itd.alcs.controller.Radio</renderer-type>
<renderer-class>itd.alcs.controller.RadioGroupRenderer</renderer-class>
</renderer>
<renderer>
<component-family>javax.faces.Input</component-family>
<renderer-type>itd.alcs.controller.Radio</renderer-type>
<renderer-class>itd.alcs.controller.RadioGroupRenderer</renderer-class>
</renderer>
我的渲染器代码是:
public class RadioGroupRenderer extends com.ibm.xsp.renderkit.html_basic.RadioRenderer {
public RadioGroupRenderer() {
System.out.println("RadioGroupRenderer");
}
@Override
public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
System.out.println("encodeBegin");
super.encodeBegin(context, component);
}
@Override
public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
System.out.println("encodeEnd");
Writer writer = context.getResponseWriter();
XspSelectOneRadio tcomponent = component instanceof XspSelectOneRadio ? (XspSelectOneRadio) component : null;
if (tcomponent == null) {
System.out.println("Nothing");
writer.write("Nothing");
}
if (tcomponent.isReadonly()) {
// writer.write(tcomponent.getValue().toString());
System.out.println("Read Only");
writer.write("Read Only");
} else {
//super.encodeEnd(context, component);
System.out.println("Edit");
writer.write("Edit");
}
}
}
当我应用此渲染器类型时,会发生一些事情。而那件事就是我没有输出。我的回答中没有任何内容。控制台中没有错误。我没有在构造函数或encodeBegin或encodeEnd中放入控制台消息。
如果我将渲染器类型或渲染器类的名称更改为无效的...仍然没有。没有错误,没有输出。我不知道是否有什么东西正在诱捕我的错误并默默处理它们......或者是什么?
我怎么能弄清楚我在做错了什么?奖励积分,如果你能告诉我我做错了什么,但我真正想知道的是如何获得某种反馈来解决这个问题。
答案 0 :(得分:2)
回答我自己的问题,以防其他人遇到这个......
<renderer>...</renderer>
代码需要进入<render-kit></render-kit>
代码。你认为我在4小时的搜索中遇到过这种情况,但没有。