0

配列でデータを受け取り、 を使用して同じ画面に表示しています<h:dataTable>。コンテンツを逆順に表示するにはどうすればよいですか。つまり、最初の行に最新のエントリを表示するにはどうすればよいですか?

以下は、nonDox.non_Listを逆順に表示できるコードです

<h:body>
<h:panelGroup rendered="#{not empty dataBase}">
     <h:form id="nonDoxScanForm">
     <f:event listener="#{nonDox.validate_AccNo}" type="postValidate" />
      &nbsp;&nbsp;
     <table border="0"  class="InnerBox"    width="55%">
        <tr><th  colspan="7" align="Center" class="clsTitle">Non Dox Add</th></tr>
        <tr>
           <td>Delivery Date</td>
           <td >Consginee (F2) </td>
           <td>Weight (F3)</td>
           <td>SubBranch Code(F4)</td>
           <td >Consignment No (F10)</td>
           <td align="Center">(F12)</td>
        </tr>
        <tr>
           <td>  <p:calendar value="#{nonDox.delDate}" id="fDat" />    </td>
           <td><h:inputText size="20" id="fcon" value="#{nonDox.consignee}" /> </td>
           <td><h:inputText size="20" id="fweig" value="#{nonDox.weight}" >
           </h:inputText> </td>
           <td><h:inputText size="20" id="fsub" value="#{nonDox.subBranchCode}" >
           <f:validateLength  maximum="3"></f:validateLength>
           </h:inputText> </td>`enter code here`
           <td><h:inputText size="10" id="acno" value="#{nonDox.accNo}" onfocus="this.select()"  >
            </h:inputText>
           </td>
           <td> <h:commandButton value="Add" id="fAdd" action="#{nonDox.addAction}" onclick="return validate();"  />
           </td>
           <td> <h:commandButton value="Save" action="#{nonDox.saveAction}" >
           </h:commandButton>
           </td>
       </tr>
       <tr>
          <td colspan="7">
          <h:message for="acno"/>
          </td>
       </tr>
    </table>
    <h:dataTable value="#{  nonDox.non_List}" var="o"
     styleClass="order-table"
     headerClass="order-table-header"
     rowClasses="order-table-odd-row,order-table-even-row" width="55%"
     >
     <h:column>
        <f:facet name="header">Del Date</f:facet>
         #{o.cor_Date.substring(0, 10)}
     </h:column>
     <h:column>
        <f:facet name="header">consignee</f:facet>
         #{o.consignee}
     </h:column>
     <h:column>
        <f:facet name="header">Weight</f:facet>
        #{o.weight}
    </h:column>
    <h:column>
       <f:facet name="header">Rate</f:facet>
       #{o.rate}
    </h:column>
    <h:column>
       <f:facet name="header">subBranchCode</f:facet>
       #{o.subBranchCode}
   </h:column>
   <h:column>
      <f:facet name="header" >POD No</f:facet>
      #{o.accNo}
   </h:column>
   <h:column>
      <f:facet name="header">Action</f:facet>
      <h:commandLink value="Delete" action="#{nonDox.deleteAction(o)}" />
   </h:column>
 </h:dataTable>
 </h:form>
 <h:panelGroup >
     <h:panelGroup rendered="#{empty  dataBase}">
     <h1>Session Expired</h1>
     <h:link outcome="Login" target="CommonContent" >Login</h:link>
  </h:panelGroup>
  </h:body>
4

1 に答える 1

3

Listas inを使用している場合はnew ArrayList<Item>()簡単です: use Collections#reverse():

private List<Item> data;

@PostConstruct
public void init() {
    data = service.list();
    Collections.reverse(data);
}

// ...

<h:dataTable value="#{bean.data}">普通に参考にしてください。

のように配列を使用している場合は、を使用して最初Item[]に変換する必要があります。これにより、次のようにフィードできます。ListArrays#asList()Collections#reverse()

private List<Item> data;

@PostConstruct
public void init() {
    Item[] items = service.array();
    data = Arrays.asList(items);
    Collections.reverse(data);
}

// ...

または、バッキング Bean でこの変換手順を実行する必要がないように、サービス メソッドを書き直します。

重要なのは、ビューでこのジョブを実行することを期待すべきではないということです。ビューが期待するものとまったく同じになるようにモデルを準備するだけです。それ<h:dataTable>自体はそのような施設を提供していません。

于 2013-07-22T13:24:07.933 に答える