2008-12-10 84 views
1

有一個myfaces數據表,有可能有2 爲每個記錄? 我簡單的一個行的表如下所示:JSF中每條記錄有多行?

<h:dataTable id="somelist" value="#{MyBean.somelist}" var="item"> 
    <h:column> 
     <f:facet name="header"> 
      <h:outputText value="ID"/> 
     </f:facet> 
     <h:outputText value="#{item.id}"/> 
    </h:column> 
</h:dataTable> 

回答

1

是的,在這種情況下。您可以通過自定義DataModel控制綁定到outputText的值。

public class TwoRowModel extends DataModel { 

    private List<Pair> values = initData(); 
    private int index = -1; 

    private List<Pair> initData() { 
     List<Pair> list = new ArrayList<Pair>(); 
     for (int i = 0; i < 5; i++) { 
      Pair pair = new Pair(); 
      pair.key = "Key " + i; 
      pair.value = "Value " + i; 
      list.add(pair); 
     } 
     return list; 
    } 

    @Override 
    public int getRowCount() { 
     return values.size() * 2; 
    } 

    @Override 
    public Object getRowData() { 
     Pair pair = values.get(index/2); 
     if (index % 2 == 0) { 
      return pair.key; 
     } else { 
      return pair.value; 
     } 
    } 

    @Override 
    public int getRowIndex() { 
     return index; 
    } 

    @Override 
    public Object getWrappedData() { 
     throw new UnsupportedOperationException("Demo code"); 
    } 

    @Override 
    public boolean isRowAvailable() { 
     int realIndex = index/2; 
     if (realIndex < 0) { 
      return false; 
     } 
     if (realIndex >= values.size()) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public void setRowIndex(int idx) { 
     this.index = idx; 
    } 

    @Override 
    public void setWrappedData(Object value) { 
     throw new UnsupportedOperationException("Demo code"); 
    } 

    class Pair { 
     public String key; 
     public String value; 
    } 

} 

在這個演示代碼,返回的值就是要顯示的一個:

<h:dataTable id="somelist" value="#{twoRowModel}" var="item"> 
     <h:column> 
      <f:facet name="header"> 
       <h:outputText value="ID" /> 
      </f:facet> 
      <h:outputText value="#{item}" /> 
     </h:column> 
    </h:dataTable> 
+0

這看起來不錯,我會嘗試了這一點。 – 2008-12-10 15:57:32