I noticed the new code for the replacement symbols. Gary, I like how you've opened it up to any attribute that is not defined. Great job on this.
It seems that the ClayViewHandler will now have to change to accomodate this. I noticed the following problem today. If I have <component jsfid="myInput" extends="inputText"> <attributes> <set name="id" value="@myId"/> <set name="value" value="#{myBean.bar}"/> </attributes> </component> then in the html <span jsfid="myInput" myId="foo"/> What happens it that the first time the page is rendered, everything works properly. I get an input field with in id of 'foo'. Then the next time the page is rendered I get a Duplicate Id in the Faces Tree error for 'foo'. I debugged this a little bit and I noticed that the second time the page is rendered 2 HtmlInputText components exist in the Faces Tree for 'foo'. So I am guessing that Clay is doing the replacement on the symbol later than it needs to for id. In which case it would look for a component with id @myId instead of foo when deciding whether or not a component needs to be created. Ryan