2017-07-30 10 views
1

私は特定のクラスのオブジェクトのリストを持っています。各オブジェクトには、idvalueの2つのフィールドがあります。JSFのテーブル行1列あたり2要素のリストを印刷する

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

私は彼らがちょうどランダムな方法で、そこに投げ込まれたくない:私はそのように、JSFによって、行ごとに2つの要素を、そのリストを表示することがあります。私はむしろ、いくつかのテーブル(4列)でそれを表示することを考えていたので、乱雑に見えません(一方の値が他の値よりも短い場合)。

私はh:panelGroupを使用することを考えましたが、c:forEachを使用することはできません。その時点で私のリストは利用できません(そして、はい、私はそこに何も印刷しません)。 はh:panelGroupと一緒に使用できません。

h:dataTableを使用することはできません。リストの2つの要素を1行に印刷する必要があり、h:dataTableはそのようなことを念頭において作成されているわけではありません。

どうすればよいですか?

(私はJSF-のnoob午前、または...むしろ最悪:私はその後、長い時間のためにそれを連絡していなかった、 JSF-noobのあった)、これを解決するための

答えて

0

、あなたは最初のグループに持っていますペアでリスト、そしてあなたは、UIを使用することができます

@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> 

結果にに:のような結果を印刷するrepetat + HTMLのテーブルをsee

関連する問題