1

2 つの列を持つ PanelGrid を作成し、 Listからデータをロードしようとしています。問題は、新しい行が作成されないことです。リスト全体を最初の行に配置するだけです。

データベースとの通信はありません。表示する必要があるのは、各値の行を持つ単なるリストです。

これは私の PanelGrid がどのように見えるかです:

        <p:panelGrid style="border:10px;">

                <p:row>
                    <p:column style="font-size:15px;font-weight:bold;">Column1</p:column>
                    <p:column style="font-size:15px;font-weight:bold;">Column2</p:column>
                </p:row>

                <p:row>
                    <p:column style="width:35%">
                        <h:outputText value="#{myService.columnOne}" />
                    </p:column>
                    <p:column style="width:35%">
                        <h:outputText value="#{myService.columnTwo}" />
                    </p:column>
                </p:row>

            </p:panelGrid>

そして、これは MyService.java の私のリストです:

 public List<String> columnOne = new ArrayList<String>();
public List<String> columnTwo = new ArrayList<String>();

メソッドにいくつかの値を追加するだけです

columnOne.add("String");

...

編集

キー、値マップを作成し、データテーブルに表示することで、Javaロジックを変更することで解決しました。

4

2 に答える 2

2

リストを p:panelGrid で反復処理しない p:datatable や p:datagrid などの反復子を使用する必要があります

#{myService.columnOne} は、その中の値ではなく、オブジェクト columnOne を出力します。

datagrid では、変数を定義してリストを反復します。

次のように定義する必要があります。

<p:dataGrid style="border:10px;" value="#{myService.columnOne}" var="col"  columns="3">
    <p:panel header="col" style="text-align:center">
    <h:outputText value="#{col}"/>
  </p:panel>             
 </p:dataGrid>

そして豆で

    public myservice() {
        columnOne.add("String1");
        columnOne.add("String2");
        columnOne.add("String3");

        columnTwo.add("Something1");
        columnTwo.add("Something2");
        columnTwo.add("Something3");

    }
public List<String> getColumnOne() {
    return columnOne;
}
于 2013-03-26T10:15:13.347 に答える
2

あなたが書いている方法では、もちろん作成されませんが、ヘッダー用と2つの列を含む2つの行のみが出力され、columnOne.toString()and columnTwo.toString().

それらを 1 つだけで表示する何らかの方法があるはずp:panelGridです。ただし、両方のリストが同じサイズであることが確実な場合は、2 つの を使用するのが最善の方法 (Java コードに最適化され、追加のコードは必要ありません) でありp:panelGrid、それぞれに 1 つの列が表示されます。その後、CSS を操作して、一意のテーブルとして表示します。

あなたのコメントに基づいて、ここで私のアプローチで何をすべきか:

<p:dataTable var="colValue" value="#{myService.columnOne}">    
  <p:column headerText="Column1">  
        <h:outputText value="#{colValue}" />  
  </p:column>
</p:dataTable> 

2 列目は 1 列目と同じです。

データを反復するときに使用p:panelGridを避けるために使用しませんでしたc:forEach

于 2013-03-26T09:27:14.290 に答える