-
Notifications
You must be signed in to change notification settings - Fork 57
Duplicate ID exception when using composite component with c:if #4244
Description
I have a duplicate ID exception when using a composite component two times at same page.
Both components have different IDs.
One component is conditionally rendered with <c:if>, the other one isn't
I don't have this exception when doing exactly the same thing but using a plain JSF component instead.
I already asked at stackoverflow but got no answer:
http://stackoverflow.com/questions/42863043/duplicate-id-exception-when-using-cif-with-composite-component
Below the reproducer code:
A session scoped Bean: TestBean
@Named
@SessionScoped
public class TestBean implements Serializable {
private boolean isVisible = false;
public void onSetItemVisible(AjaxBehaviorEvent e) {
this.isVisible = true;
}
public void onSetItemInvisible(AjaxBehaviorEvent e) {
this.isVisible = false;
}
public boolean isItemVisible() {
return this.isVisible;
}
}
A simple composite component: testCmp
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:cc="http://java.sun.com/jsf/composite">
<cc:interface/>
<cc:implementation>
<h:outputText id="text" value="text"/>
</cc:implementation>
</html>
A using page which allows switching between hide/show this component
<h:body>
<h:form id="testForm">
<c:if test="#{testBean.itemVisible}">
<test:testCmp id="test1"/>
</c:if>
<p/>
<test:testCmp id="test2"/>
<p/>
<!-- show/hide dynamic item -->
<h:commandLink value="Show Item">
<f:ajax execute="@this" listener="#{testBean.onSetItemVisible}" render="@form"/>
</h:commandLink>
<br/>
<h:commandLink value="Hide Item">
<f:ajax execute="@this" listener="#{testBean.onSetItemInvisible}" render="@form"/>
</h:commandLink>
</h:form>
</h:body>
When i switch between hide/show i get the exception:
"Component ID testForm:test2:text has already been found in the view"
When i don't use a composite component but a plain JSF component like e.g. <h:outputText> anything works well.
I tested with 2.2.14 and 2.3.0-m11
Affected Versions
[2.2.14, 2.3.0-m10]