So since the panelGrid continues to not work correctly for me, I thought I would just use a <c:forEach> instead (to iterate over my collection of beans) and then embed a <h:form> within the body. I tried this and set the loop's current bean into the session within the loop body. I then used the jsf form components to retrieve the bean from the session & write out the form values. This works fine for the first loop but jsf tags use the initial bean value in the subsequent loops, even though my jstl tags (used only for testing) use the correct bean as expected. So it looks like the jsf tags aren't picking up the bean when it's changed.
So my workaround failed (which sucks) but if the correct components were processed in the first place, I wouldn't have had any of these problems (and wouldn't have wasted 3 days & counting). If this wasn't a long weekend for me, I think I would freak out..

