This is actually a feature that had been working at one time and has now ceased. The change? It's now a portlet in Liferay.
What is supposed to happen is a DataTable, which starts out empty, gets values added to it when the user makes some selections and clicks a commandButton.
edit: Code from the backing bean...
Using debug statements I've verified that the ArrayList that feeds the DataTable is being updated, but the control on the page isn't. I gather the update isn't able to find the component anymore now that it's in a Liferay context... but looking at the component path in the page source gives me the naming containers I'm already defining in the update.
I haven't done anything with PrimeFaces in a long time, but I do have a suspicion.
When you use AJAX to manage a SUBMIT, you normally have to indicate what parts of the View (if any) need to be updated to reflect the results of that submission. I didn't notice any re-rendering element IDs in your View template.
An IDE is no substitute for an Intelligent Developer.
Is it? (Learning experience for me) the commandButton is inside the analyzeTreeHolder panelGroup, which makes it under a separate parent from the DataTable, or am I misunderstanding? (I had originally tried the update pointing directly at availableStudy.)
I'm thinking it must have something to do with being moved into a portlet environment, but it's not clear to me how.
It seems a progressBar that had been added to the page was interfering with the way things were working. I learned this by converting a similar view into a portlet and testing it, and it worked perfectly. The only significant difference between the two page views was that progressBar, which was installed as a facet of the DataTable.
So, I'll be looking to determine why the progressBar was breaking things, but for now, the mystery is solved.