Hello Volker, my experience is you should assign uniqueIds to components. What is the diffence between components created by application from a tag and inside a component?
If not you get maybe some errors like this: If this component was created dynamically (i.e. not by a JSP tag) you should assign it an explicit static id or assign it the id you get from the createUniqueId from the current UIViewRoot component right after creation! If I have time i will checkin the files to reproduce the error. Regards Bernd Volker Weber schrieb: > Bernd, > > i don't know how facelets component creation, rerendering works, but > to my experience the assigning of viewRoot.createUniqueId() ids to > componets created by application wil result in dublicateIdException on > rerendering. > > > Regards, > Volker > > 2008/1/15, [EMAIL PROTECTED] <[EMAIL PROTECTED]>: >> Author: bommel >> Date: Tue Jan 15 14:21:33 2008 >> New Revision: 612250 >> >> URL: http://svn.apache.org/viewvc?rev=612250&view=rev >> Log: >> (TOBAGO-596) Duplicate component Id exception with tc:date and tx:date with >> facelets >> >> Modified: >> >> myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIDatePicker.java >> >> myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/DatePickerRenderer.java >> >> Modified: >> myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIDatePicker.java >> URL: >> http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIDatePicker.java?rev=612250&r1=612249&r2=612250&view=diff >> ============================================================================== >> --- >> myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIDatePicker.java >> (original) >> +++ >> myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIDatePicker.java >> Tue Jan 15 14:21:33 2008 >> @@ -135,13 +135,15 @@ >> UIHiddenInput hidden = >> (UIHiddenInput) ComponentUtil.createComponent(facesContext, >> UIHiddenInput.COMPONENT_TYPE, RENDERER_TYPE_HIDDEN); >> + hidden.setId(facesContext.getViewRoot().createUniqueId()); >> link.getChildren().add(hidden); >> >> // create popup >> final UIPopup popup = >> (UIPopup) ComponentUtil.createComponent(facesContext, >> UIPopup.COMPONENT_TYPE, >> RENDERER_TYPE_POPUP); >> - //popup.setId(link.getId() + "popup"); >> + >> + popup.setId(facesContext.getViewRoot().createUniqueId()); >> link.getFacets().put(FACET_PICKER_POPUP, popup); >> >> popup.setRendered(false); >> @@ -234,6 +236,7 @@ >> UIGraphic image = (UIGraphic) ComponentUtil.createComponent( >> facesContext, UIGraphic.COMPONENT_TYPE, RENDERER_TYPE_IMAGE); >> image.setRendered(true); >> + image.setId(facesContext.getViewRoot().createUniqueId()); >> image.setValue("image/date.gif"); >> image.getAttributes().put(ATTR_ALT, ""); //TODO: i18n >> >> StyleClasses.ensureStyleClasses(image).addFullQualifiedClass("tobago-input-picker"); >> // XXX not a standard name >> >> Modified: >> myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/DatePickerRenderer.java >> URL: >> http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/DatePickerRenderer.java?rev=612250&r1=612249&r2=612250&view=diff >> ============================================================================== >> --- >> myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/DatePickerRenderer.java >> (original) >> +++ >> myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/DatePickerRenderer.java >> Tue Jan 15 14:21:33 2008 >> @@ -70,20 +70,18 @@ >> link.setDisabled(dateInput.isReadonly() || dateInput.isDisabled()); >> } >> } >> - String idPrefix = dateInput.getId() + "_picker"; >> Map<String, Object> attributes = link.getAttributes(); >> link.setActionListener(datePickerController); >> attributes.put(ATTR_LAYOUT_WIDTH, getConfiguredValue(facesContext, >> component, "pickerWidth")); >> UIComponent hidden = (UIComponent) link.getChildren().get(0); >> - hidden.setId(idPrefix + "Dimension"); >> + UIPopup popup = (UIPopup) link.getFacets().get(FACET_PICKER_POPUP); >> + >> attributes.put(ATTR_ACTION_ONCLICK, "Tobago.openPickerPopup(event, '" >> + link.getClientId(facesContext) + "', '" >> - + hidden.getClientId(facesContext) + "')"); >> - >> - UIPopup popup = (UIPopup) link.getFacets().get(FACET_PICKER_POPUP); >> + + hidden.getClientId(facesContext) + "', '" >> + + popup.getClientId(facesContext) +"')"); >> >> attributes = popup.getAttributes(); >> - popup.setId(idPrefix + "popup"); >> >> attributes.put(ATTR_WIDTH, String.valueOf( >> ThemeConfig.getValue(facesContext, link, "CalendarPopupWidth"))); >> @@ -113,8 +111,6 @@ >> >> applyConverterPattern(popup, converterPattern); >> >> - UIComponent image = (UIComponent) link.getChildren().get(1); >> - image.setId(idPrefix + "image"); >> if (popup != null) { >> UIPage page = ComponentUtil.findPage(facesContext, link); >> page.getPopups().add(popup); >> >> >> > >
