我在官方文档中找不到强制命令hx:dataIterator组件中显示元素的排序。
这是我的.jsp片段:
<h:form id="tableForm" style="form">
<h:panelGrid id="tableGridBooks">
<hx:dataTableEx>
...
<hx:columnEx id="columnEx9">
<f:facet name="header">
<h:panelGroup styleClass="headerClass">
<h:outputText id="text91" styleClass="outputText" value="#{msg.lblBooks}"></h:outputText>
</h:panelGroup>
</f:facet>
<hx:dataIterator value="#{varwarehouse.listBooks}" var="book" id="dataIterator1">
<h:panelGrid columns="4">
<h:outputText id="text91" styleClass="outputText" value="#{book.bookId}"></h:outputText>
<h:outputLink id="link91" rendered="#{not empty book.bookType}">
<h:outputText id="text92" value="#{msg[book.bookType.tag]}" styleClass="outputText"></h:outputText>
<hx:behavior event="onclick" behaviorAction="get;show;stop" id="behaviour1"
targetAction="subview1:panelForm1:editBookDialog;subview1:panelForm1:editBookDialog"
onActionFunction="setvalue('subview1:panelForm1:newItem', 'edit'); setvalue('subview1:panelForm1:itemId', '#{book.bookId}');">
</hx:behavior>
</h:outputLink>
<h:outputLink id="link92" rendered="#{not empty book.publisherType}">
<h:outputText id="text93" value="#{msg[book.publisherType.tag]}" styleClass="outputText"></h:outputText>
<hx:behavior event="onclick" behaviorAction="get;show;stop" id="behaviour12"
targetAction="subview1:panelForm2:editBookDialog;subview1:panelForm2:editBookDialog"
onActionFunction="setvalue('subview1:panelForm2:newItem', 'edit'); setvalue('subview1:panelForm2:itemId', '#{book.bookId}');">
</hx:behavior>
</h:outputLink>
<h:outputText id="bookStatus" styleClass='#{book.bookStatus eq "AVAILABLE" ? "iconTrue" : "iconFalse"}'/>
<h:commandLink styleClass="commandlink" rendered="#{(book.publisherType eq 'A' or book.publisherType eq 'B')}"
action="#{pc_PrintBook.printToPdf}" type="submit" value="#{msg.lblPDF}" immediate="true">
<f:param name="bookId" value="#{book.bookId}" />
<f:param name="warehouseId" value="#{varwarehouse.warehouseId}" />
</h:commandLink>
</h:panelGrid>
</hx:dataIterator>
</hx:columnEx>
...
</hx:dataTableEx>
</h:panelGrid>
</h:form>
在业务逻辑方面,重新检查书籍列表的功能(在上面的jsp中:varwarehouse.listBooks)已按书籍创建日期降序和bookId升序设置排序。
但是,当页面被呈现时,bookId没有正确地排序特定仓库中的书籍项目列表(它应该是升序的,但对于某些仓库,它是下降的,而其他仓库则是升序的。)
所以,因为我有正确的排序设置/生成
(ORDER BY warehouse.created_date DESC, book.book_id ASC)
,我认为问题是hx:dataIterator组件 我无法在任何地方找到如何能够强制某些物品在该组件上的订购? 我很天真,并认为它将保留书籍列表中存在的项目的排序(java.lang.List)。
拜托,非常感谢任何帮助 我希望有人知道答案,或者看到我在上面的jsp中遗漏的东西。
提前谢谢你,
最好的问候,
mismas
答案 0 :(得分:0)
对不起伙计们,
需要一段时间才能注意到问题不在jsf中,而是在使用java Set接口时没有任何订购保证:D。
解决方案是使用Collections.sort ...来订购它
Tnx无论如何:)