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).