Form nested within a subtable
mykey.asdf.asdf.de Feb 17, 2008 7:23 PMI am working on a editable rich:datatable. My database entries are shown with a rich:subtable, and some of the entries are supposed to be changed. I already tried to insert f:form at several positions but the only thing that seems to work is when I put it above the whole table. But that means, that every field is changed in the database and not just the selected. Is there a way to work around this?
<h:form> <rich:dataTable value="#{gradesList}" var="subj"> <rich:column colspan="13"><h:outputText value="#{subj.name}" /></rich:column> <rich:subTable value="#{subj.grades}" var="grade"> <!-- this is where the magic is supposed to happen --> <rich:columnGroup rendered="#{org.jboss.seam.framework.currentDate.year + 1900 == grade.subj.year}"> <rich:column><h:outputText value="#{grade.subj.year}" /></rich:column> <rich:column><h:inputText size="4" value="#{grade.t1g1}" /></rich:column> <rich:column><h:inputText size="4" value="#{grade.t1g2}" /></rich:column> <rich:column><h:inputText size="4" value="#{grade.t1g3}" /></rich:column> <rich:column><h:outputText value="Wird berechnet" /></rich:column> <rich:column><h:inputText size="4" value="#{grade.t2g1}" /></rich:column> <rich:column><h:inputText size="4" value="#{grade.t2g2}" /></rich:column> <rich:column><h:inputText size="4" value="#{grade.t2g3}" /></rich:column> <rich:column><h:outputText value="Wird berechnet" /></rich:column> <rich:column><h:inputText size="4" value="#{grade.t3g1}" /></rich:column> <rich:column><h:inputText size="4" value="#{grade.t3g2}" /></rich:column> <rich:column><h:inputText size="4" value="#{grade.t3g3}" /></rich:column> <rich:column><h:outputText value="Wird berechnet" /></rich:column> <rich:column><h:commandButton action="#{matriculation.changeGrades}" value="insert" /></rich:column> </rich:columnGroup> <!-- uneditable --> <rich:columnGroup rendered="#{org.jboss.seam.framework.currentDate.year + 1900 != grade.subj.year}"> <rich:column><h:outputText value="#{grade.subj.year}" /></rich:column> <rich:column><h:outputText value="#{grade.t1g1}" /></rich:column> <rich:column><h:outputText value="#{grade.t1g2}" /></rich:column> <rich:column><h:outputText value="#{grade.t1g3}" /></rich:column> <rich:column><h:outputText value="Wird berechnet" /></rich:column> <rich:column><h:outputText value="#{grade.t2g1}" /></rich:column> <rich:column><h:outputText value="#{grade.t2g2}" /></rich:column> <rich:column><h:outputText value="#{grade.t2g3}" /></rich:column> <rich:column><h:outputText value="Wird berechnet" /></rich:column> <rich:column><h:outputText value="#{grade.t3g1}" /></rich:column> <rich:column><h:outputText value="#{grade.t3g2}" /></rich:column> <rich:column><h:outputText value="#{grade.t3g3}" /></rich:column> <rich:column><h:outputText value="Wird berechnet" /></rich:column> </rich:columnGroup> </rich:subTable> </rich:dataTable> </h:form>
The method changeGrades
from the backing bean does a simple merge to the database (grade is fetched by @In).