在Core JavaServer Faces中,我们找到以下从 DataTable 中删除行的示例,其中 tableData.names 是 Name 对象的列表:
<h:dataTable value="#{tableData.names}" var="name" ... />
<h:commandLink value="Delete" action="#{tableData.deleteRow(name)}" />
</h:dataTable>
它带有一个警告,如果我们使用请求范围并且列表更改“在表格的呈现和响应的解码之间”,这可能不会删除正确的行。
注意:如果数据表的值具有请求范围,请确保数据在表的呈现和响应的解码之间不会发生变化(第 3 版第 226 页)
任何人都可以根据 JSF 生命周期来解释该引用吗?如果“呈现响应”是 JSF 生命周期的最后阶段,那么“解码响应”在哪里适合?它们是否意味着解码以下回发请求(发送生成的 ID 以识别行并因此识别名称对象)?
并且:我们如何以更强大的方式实现这一点?