2017-07-30 92 views
1

我有一個特定類的對象列表。每個對象都有兩個字段:idvalue。我要顯示由JSF該列表中,每行有兩個元素,像:如何打印JSF中每個表格行的2個元素列表

id1 value1 id2 value2 
id3 value3 id4 value4 
id5 value5 id6 value6 

我不希望他們是剛剛扔到那裏隨機的方式。我寧願考慮在某些表格(有4列)中顯示它,所以它們不會看起來雜亂(如果一個值比其他值短)。

我曾考慮過使用h:panelGroup,但我不能使用c:forEach,因爲我的列表在那一點上是不可用的(是的,我累了,它沒有打印任何東西)。 ui:repeat不能與h:panelGroup一起使用。

我不認爲我可以使用h:dataTable,因爲我需要將兩個列表元素打印在一行中,而h:dataTable不是用這樣的東西來創建的。

我該怎麼辦?

(我是JSF的小白,還是......而最糟糕的:我 JSF的小白,然後沒跟我聯繫了很長一段時間)

回答

0

爲解決這個問題,首先必須組在對的列表中,那麼你可以使用UI:repetat + HTML表格打印一樣的結果:

@Named(value = "newJSFManagedBean") 
@SessionScoped 
public class NewJSFManagedBean implements Serializable { 

    private List<String> cars; 
    private List<List<String>> finalList; 

    /** 
    * Creates a new instance of NewJSFManagedBean 
    */ 
    public NewJSFManagedBean() { 
    } 

    @PostConstruct 
    public void loadCars() { 
     //Load main list 
     cars = new ArrayList<>(); 
     cars.add("Volvo"); 
     cars.add("Volvo1"); 
     cars.add("Volvo2"); 
     cars.add("Volvo3"); 
     cars.add("Volvo4"); 
     cars.add("Volvo5"); 
     cars.add("Volvo6"); 
     cars.add("Volvo7"); 
     cars.add("Volvo8"); 
     cars.add("Volvo9"); 
     //Gruping in pairs 
     finalList = new ArrayList<>(); 
     List<String> groupList = new ArrayList<>(); 
     for (String car : cars) { 
      if (groupList.size() == 2) { 
       finalList.add(groupList); 
       groupList = new ArrayList<>(); 
      } 
      groupList.add(car); 
     } 
     finalList.add(groupList); 
    } 

    public List<String> getCars() { 
     return cars; 
    } 

    public void setCars(List<String> cars) { 
     this.cars = cars; 
    } 

    public List<List<String>> getFinalList() { 
     return finalList; 
    } 

    public void setFinalList(List<List<String>> finalList) { 
     this.finalList = finalList; 
    } 

} 

,並在XHTML

<table> 
      <tr> 
       <th>ID</th> 
       <th>VALUE</th> 
       <th>ID</th> 
       <th>VALUE</th> 
      </tr> 

      <ui:repeat var="item" 
         value="#{newJSFManagedBean.finalList}"> 
       <tr> 
        <ui:repeat var="subItem" 
           value="#{item}"> 
         <td>someId</td> 
         <td>#{subItem}</td> 
        </ui:repeat> 
       </tr> 
      </ui:repeat> 


     </table> 

結果: see

相關問題