In a portlet environment a non-faces request produces an exception when the faces tree is rendered if the faces tree contains a DataScroller component. The HtmlDataScroller renderer actually renders its children twice in this case, once in the encodeChildren method and once in the encodeEnd method. Since rendering of the children is taken care of in encodeEnd I made the encodeChildren method a no-op. Also, although the CommandLinks which are rendered as children are marked as transient, they see to stick around. I put a check in the getLink methods to make sure that the links are not added twice. This seems to fix the duplicate id exception, but it might be necessary to further investigate why they are sticking around in the first place.