Radio Group / SelectOne的自定义渲染器不执行任何操作

时间:2016-04-27 16:23:51

标签: jsf xpages jsf-1.2

广播组的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中放入控制台消息。

如果我将渲染器类型或渲染器类的名称更改为无效的...仍然没有。没有错误,没有输出。我不知道是否有什么东西正在诱捕我的错误并默默处理它们......或者是什么?

我怎么能弄清楚我在做错了什么?奖励积分,如果你能告诉我我做错了什么,但我真正想知道的是如何获得某种反馈来解决这个问题。

1 个答案:

答案 0 :(得分:2)

回答我自己的问题,以防其他人遇到这个......

<renderer>...</renderer>代码需要进入<render-kit></render-kit>代码。你认为我在4小时的搜索中遇到过这种情况,但没有。