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);
>
>
>
--
inexso - information exchange solutions GmbH
Bismarckstraße 13 | 26122 Oldenburg
Tel.: +49 441 4082 356 |
FAX: +49 441 4082 355 | www.inexso.de