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);
>>
>>
>>
> 
> 

Reply via email to