public void render(Comboitem item, Object bean, int index) throws Exception { final List<Component> kids = cast((List) item.getAttribute(KIDS)); item.getChildren().addAll(kids); //item.removeAttribute(KIDS); //remove template mark of cloned component and its descendants _binder.setupTemplateComponent(item, null); //setup clone id BindingRendererUtil.setupCloneIds(item); //bind bean to the associated listitem and its descendants final String varname = (String) _template.getAttribute(DataBinder.VARNAME); final Map<Object, Object> templatemap = cast((Map) item.getAttribute(DataBinder.TEMPLATEMAP)); templatemap.put(varname, bean); //apply the data binding _binder.loadComponent(item); //feature# 3026221: Databinder shall fire onCreate when cloning each items DataBinder.postOnCreateEvents(item); //since 5.0.4 }
@SuppressWarnings("unchecked") private void render(Comboitem item, Object value, int index) throws Throwable { if (!_rendered && (_renderer instanceof RendererCtrl)) { ((RendererCtrl) _renderer).doTry(); _ctrled = true; } try { try { _renderer.render(item, value, index); } catch (AbstractMethodError ex) { final Method m = _renderer.getClass().getMethod("render", new Class<?>[] { Comboitem.class, Object.class }); m.setAccessible(true); m.invoke(_renderer, new Object[] { item, value }); } Object v = item.getAttribute(Attributes.MODEL_RENDERAS); if (v != null) //a new item is created to replace the existent one item = (Comboitem) v; } catch (Throwable ex) { try { item.setLabel(Exceptions.getMessage(ex)); } catch (Throwable t) { log.error("", t); } throw ex; } if (getSelectableModel().isSelected(value)) setSelectedItem(item); _rendered = true; }