I'm running into a problem using "Xml views" using HTML templates. Loading a
page initially works fine, but if I reload the page either by clicking on a
link or hitting Refresh, I get the following error.
java.lang.IllegalStateException: Client-id : _id0 is duplicated in the faces
tree.
at
org.apache.myfaces.application.jsp.JspStateManagerImpl.checkForDuplicateIds(JspStateManagerImpl.java:241)
at
org.apache.myfaces.application.jsp.JspStateManagerImpl.checkForDuplicateIds(JspStateManagerImpl.java:255)
(the above line is repeated several times)
at
org.apache.myfaces.application.jsp.JspStateManagerImpl.savedSerializedView(JspStateManagerImpl.java:204)
at
org.apache.shale.clay.faces.ClayViewHandler.renderView(ClayViewHandler.java:418)
...
The error goes away if I load the page again, and then comes back if I load the
page again after that.
I created a very simple test page to reproduce the problem:
bugTest.html
---------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html>
<head>
<title>Testing</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
foo
</body>
</html>
clay-views.xml (excerpt)
----------------------------
<component jsfid="/bugTest.clay" extends="clay">
<attributes>
<set name="clayJsfid" value="/path/to/bugTest.html" />
</attributes>
</component>
(web.xml maps *.clay to the Faces servlet and the Shale application filter)
I don't know if this is a bug in MyFaces (I'm using version 1.1.1), a bug in
Clay, or if I'm doing something wrong, but I've never seen this problem before
with my other (non-Clay-based) pages. Any ideas?
Rich Eggert
Member of Technical Staff
Proteus Technologies, LLC
http://www.proteus-technologies.com