我对数据表的输入:List<SelectionDto<PersonContainer>>
。
PersonContainer
包含:List<QuestionContainer>
QuestionContainer
包含:Date date1, Date date2
通常的话:每个人都有questionContainer
的列表(通常只有1个容器)。此容器中的2个问题是日期。必须填写其中一个日期。也许两者都被填满了。
我有3 dataTables
,第一个显示给定输入。在最后一列是一个执行javascript的按钮,它启动一个包含第二个和第三个dataTable
的对话框。
2. dataTable
应显示第一个日期(如果存在)
3. dataTable
应显示第二个日期(如果存在)
这个表格运行正常:
<t:dataTable id="tableId" value="#{value}" var="dto" rowIndexVar="row">
<ui:insert />
<h:column>...</h:column>
...
<h:column>
<h:outputText value="#{dto.src.person.quesions[0].date1}" />
<h:commandLink value="Extend" styleClass="button">
<f:ajax render=":messages" onevent="showDialog" />
<f:setPropertyAcionListener target="#{Bean.currentRow}" value="#{row}" />
</h:commandLink>
</t:dataTable>
问题在于:[Bean.currentRow]
始终为0.我调试了它,在Bean中,值以正确的方式传递,但不在dataTables
<h:panelgroup id="dialog" layout="block" styleClass="dN">
<h:dataTable value="#{value[Bean.currentRow].src.person.questions}" var="questions" rendered="#{not empty value[Bean.currentRow].src.person.questions[0].date1}">
<h:column>
<h:outputText value="#{questions.date1}" />
</h:column>
<h:column>
<h:inputText value="#{questions.date1}" styleClass="datalizeMe" />
</h:column>
</h:dataTable>
<h:dataTable>
//same with date2
</h:dataTable>
</h:panelGroup>
因此,当我单击“扩展”按钮时,会打开一个窗口,它会显示列表中第一个人的日期,而不是我点击的按钮上的人。
如何将行索引传递给第二个和第三个dataTable的value[Index]
?
请用德语或英语答案:)