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

Reply via email to