2013-07-22 2 views
0

배열의 데이터를 받아 들여 <h:dataTable>을 사용하여 같은 화면에 표시하고 있습니다. 내용을 역순으로 표시하는 방법, 즉 첫 번째 행에 최신 항목을 표시 하시겠습니까? 다음은내용을 역순으로 표시하는 방법 <h:dataTable>

당신이 new ArrayList<Item>()에서 같은 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> 

답변

2

에 nonDox.non_List를 표시 할 수있는 코드, 그것은 쉽게 : 사용 Collections#reverse() :

private List<Item> data; 

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

// ... 

을 그냥 참조 보통의 방법으로 <h:dataTable value="#{bean.data}">에서.

private List<Item> data; 

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

// ... 

하거나 재 작성 : 당신이 Item[] 같이 배열을 사용하는 경우 당신이 Collections#reverse()에 공급 할 수 있도록

, 당신은, Arrays#asList()의 도움으로 List 처음으로 변환해야 할 것 이 메소드는 backing 빈에서이 변환 단계를 수행 할 필요가 없다.

키가 있습니다.보기에서이 작업을 수행하지 않아야합니다. 보기와 정확히 일치하는 방식으로 모델을 준비해야합니다. <h:dataTable> 그 자체는 그런 시설을 제공하지 않습니다.

+0

안녕하세요 BalusC, 친절하게 아래 내 코드를 찾으십시오. –

+0

@BalusC에서'service.array() '에 대해 설명해 주실 수 있습니까? '서비스 '란 무엇입니까 – Orbita

+1

@Orbita : DB와 상호 작용하고 원하는 데이터를 반환하는 비즈니스 서비스 클래스입니다. 보통 EJB. 내 대답의 코드는 순전히 모범입니다. 다른 클래스/변수/메소드 이름을 사용할 수 있습니다. 그러나 논리는 완전히 동일합니다. – BalusC

관련 문제