You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Gonçalo Manuel Cruchinho (JIRA)" <de...@myfaces.apache.org> on 2014/02/13 17:03:23 UTC

[jira] [Created] (MYFACES-3853) ui:include not working inside c:forEach

Gonçalo Manuel Cruchinho created MYFACES-3853:
-------------------------------------------------

             Summary: ui:include not working inside c:forEach
                 Key: MYFACES-3853
                 URL: https://issues.apache.org/jira/browse/MYFACES-3853
             Project: MyFaces Core
          Issue Type: Bug
    Affects Versions: 2.2.0
            Reporter: Gonçalo Manuel Cruchinho
            Priority: Critical


Using ui:include inside a c:forEach cases a duplicate id error. This only happens if there is at least a second element to iterate.

The exception is the following: java.lang.IllegalStateException: Client-id : <clientId> is duplicated in the faces tree.

Below there's an example of a test case that replicates the problem.

Test Case

Myfaces22ForEach.java

@ManagedBean(name = "myfaces22foreach")
@SessionScoped
public class Myfaces22ForEach {

	private List<String> pageList;

	private String test;

	public List<String> getPageList() {
		if (pageList == null) {
			pageList = new ArrayList<String>();
			pageList.add("page1.xhtml");
			pageList.add("page2.xhtml");
		}
		return pageList;
	}
	public void setPageList(List<String> pageList) {
		this.pageList = pageList;
	}

	public String getTest() {
		return test;
	}
	public void setTest(String test) {
		this.test = test;
	}
}

myfaces22foreach.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:c="http://java.sun.com/jsp/jstl/core"
	xmlns:ui="http://java.sun.com/jsf/facelets">
	
	<h:head>
	    <title>Myfaces 2.2 | forEach Test</title>
	</h:head>
	<h:body>
		<h:form>
			<table>
				<c:forEach items="#{myfaces22foreach.pageList}" var="page">
					<tr>
						<td>
							<ui:include src="#{page}" />
						</td>
					</tr>
				</c:forEach>
			</table>
		</h:form>
	</h:body>
</html>

page1.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:ui="http://java.sun.com/jsf/facelets">
	
	<h:outputText value="Test" />
	
</ui:composition>

page2.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:ui="http://java.sun.com/jsf/facelets">
	
	<h:inputText value="#{myfaces22foreach.page}" />
	
</ui:composition>



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)