如何动态生成行PanelGrid ?Primefaces (JSF)



我试图创建一个有2列的PanelGrid,并从列表加载数据。问题是它不创建新行。它只是把整个列表放在第一行。

与数据库没有通信。它只是一个我需要显示的列表,每个值对应一行。

我的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逻辑,通过创建一个键,值映射,并显示在一个数据表。

不用p:panelGrid来迭代列表应该使用p:datatable或p:datagrid

这样的迭代器。

# {myService。columnOne}将输出对象columnOne,而不是其中的值。

在datagrid中定义一个var来迭代列表。

你应该这样定义;

<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;
}

在你写它的方式,当然它不会做,但只有两行,一个标题和另一个包含两个颜色,他们将输出columnOne.toString()columnTwo.toString()

一定有某种方法可以在一个p:panelGrid中显示它们。但是,如果您确定两个列表具有相同的大小,我认为最好的方法(优化并且在Java代码中不需要额外的代码)是使用两个p:panelGrid,每个都将显示一列。之后,使用CSS使它们显示为唯一的表。

根据你的意见,我应该这样做:

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

第二列和第一列一样

我没有使用p:panelGrid来避免在迭代数据

时使用c:forEach

相关内容

  • 没有找到相关文章

最新更新