【发布时间】:2016-08-22 02:10:45
【问题描述】:
广播组的 XPages 渲染器将所有内容都放入表格中,基本上很糟糕。我正在尝试使用自定义渲染器解决此问题。我已经尝试了很多东西,但现在我被卡住了,因为我根本没有进一步的信息。
我的渲染器在 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 中没有输入任何控制台消息。
如果我将渲染器类型或渲染器类的名称更改为无效的名称......仍然没有。没有错误,没有输出。我不知道是否有什么东西在捕获我的错误并默默地处理它们,或者......什么?
我怎样才能找出我在这里做错了什么?如果你能告诉我我做错了什么,可以加分,但我真正想知道的是如何获得某种反馈来自己解决这个问题。
【问题讨论】: