In my hibernate model I have a List<String> annotated as a @CollectionOfElements. I want to be able to edit this collection (it's a list of goals - each goal being a 100 character h:textInput) in a datatable, with the ability to add and remove goals.
Similar things work fine when I've had a collection of other entities and edited their attributes, but the same approach doesn't seem to work for this. I can add and remove rows, but any updates I make in the form are never saved.
<rich:dataTable id="goalsTable" value="#{course.goals}" var="goal" rowKeyVar="rownum"> <h:column> <f:facet name="header">Goal</f:facet> <h:inputText id="goal" value="#{goal}" maxlength="100"/> </h:column> <h:column> <f:facet name="header">Action</f:facet> <a4j:commandButton id="addGoal" value="Add Goal" action="#{course.getGoals().add(ronum, '')}" reRender="courseDetailsPanel"/> <a4j:commandButton id="removeGoal" value="Remove Goal" rendered="#{course.goals.size() > 1}" action="#{course.goals.remove(ronum)}" reRender="courseDetailsPanel"/> </h:column> </rich:dataTable>
I suspect this isn't going to work because I'm trying to update the value that's also what I'm iterating, but short of creating a Goal entity that wraps the String value I'm not sure if there's a better way of doing this.
Anyone got any ideas?
Thanks, Andrew