2016-04-27 2 views
1

Средство рендеринга XPages для группы радио ставит все в таблицы и в основном ужасно. Я пытаюсь исправить это с помощью специального рендеринга. Я пробовал много вещей, но сейчас я застрял, потому что у меня просто нет информации, чтобы идти дальше.Пользовательский рендерер для группы радио/SelectOne ничего не делает

Мой визуализатор объявлен в гранях-конфигурации, как так:

<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.

Если я изменю имя класса renderer-type или renderer-class на что-то недействительное ... все равно ничего. Нет ошибок, нет вывода. Я не знаю, что-то улавливает мою ошибку и обрабатывает их молча или ... что?

Как я могу понять, что я здесь делаю неправильно? Бонусные баллы, если вы можете рассказать мне, что я делаю неправильно, но то, что я действительно хочу знать, - это как получить обратную связь, чтобы самостоятельно устранить эту проблему.

ответ

2

Отвечая на мой собственный вопрос в случае, если кто-то работает в этом ....

The <renderer>...</renderer> теги должны идти внутри <render-kit></render-kit> теги. Вы бы подумали, что я столкнулся бы с этим через 4 часа поиска, но нет.

+0

Поместите что-нибудь на OpenNTF, если вы это сделаете! Я ненавижу таблицы, которые XPages делает для групп радио. спасибо, Говард – Howard

Смежные вопросы