jsf - 更改订单时访问 DataTable 项返回不正确的选定项
问题描述
为了更好地读取数据表中单元格的内容,我使用了 commandLink 来调出一个对话框。
只要将 dataTable 的 sortOrder 设置为升序,就可以正常工作。在使用 sortOrder desc 并单击 commandLink 时,对话框会显示本来应该存在的项目的结果,如果 sortOrder 一直在升序(换句话说,在 desc dataTable -8,7,....,2, 1- 有 8 行,单击 id =2 的行将显示行 id=7) 的内容。
是什么导致了 ID 混淆?我是否没有暂时将实际单击的项目存储在支持 bean 中,这不应该受 sortOrder 的影响?对于我要完成的工作,是否有更好的做法?
PF 5.3 版,JSF 2.2.7
数据表和对话框
<p:dataTable id="improvementTable" var="improvement" widgetVar="improvementsTable" value="#{Controller.improvements}" sortBy="#{improvement.id}" sortOrder="descending">
<p:column headerText="ID">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{improvement.id}" />
</f:facet>
<f:facet name="input">
<p:inputText id="modelInput" value="#{improvement.id}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:commandLink id="detailOut" value="#{improvement.detail}" action="#{Controller.setSelectedImprovement(improvement)}" process="@this" oncomplete="PF('wDetail').show();" update=":dlgDetail" />
</p:column>
</p:dataTable>
</h:form>
<p:dialog id="dlgDetail" widgetVar="wDetail">
<h:outputText value="#{Controller.selectedImprovement.detail}" />
</p:dialog>
在豆子里
@ManagedBean (name="Controller")
@RequestScoped
public class Controller{
private List<Improvement> improvements;
private Improvement selectedImprovement;
@PostConstruct
public void load() {
CIMImprovementDao cimDao = new CIMImprovementDao();
improvements = cimDao.getAll();
}
public List<Improvement> getImprovements() {
return improvements;
}
public Improvement getSelectedImprovement() {
return selectedImprovement;
}
public void setSelectedImprovement(Improvement selectedImprovement) {
this.selectedImprovement = selectedImprovement;
}
}
解决方案
推荐阅读
- android - 无法在android studio中打开运行窗口
- salesforce - CPQ报价线显示多次
- inkcanvas - 手写功能就像 fiinote 手写一样
- android - 在本机反应中发布后崩溃的应用程序?
- flutter - 如何限制 TextSpan 小部件的文本长度
- javascript - 单击“Enter”按钮时提交表单,并进行验证
- flutter - 如何在不改变屏幕/页面的情况下传递数据?
- kubernetes - 是否可以在容器内的 env 中将 application.properties 的内容作为键/值对公开?
- javascript - 使用 node.js 处理来自 aws s3 getobject 的数百万条记录并通过分页将记录返回到前端的最佳方法
- python - Django 连接错误(Oracle 11g 数据库)