Thanks. You are dead right.
I (stupidly) had some code that was getting called by Ajax4JSF that was
resetting everything.
Using a rich:datatable works fine for inputting tables of data. I hadn't
realised that the 'var' was not just for output but also for input.
rich:dataTable
I'm not sure if I completely understand what you are trying to achieve, but why
not use something like facelets ui:repeat or tomahawks t:dataList component?
E.g.
| ui:repeat value=#{myBean.name} var=arrayItem
| h:inputText id=firstname value=#{arrayItem.firstname}/
| /ui:repeat