Primefaces dataGrid显示的行和列设置过多的项

问题描述 投票:4回答:1

在我的示例中,Primefaces dataGrid的行数设置为5,列设置为2。但是,呈现的表显示6个项目。

这几乎没有引起注意,直到我们意识到第六项的按钮不起作用-最有可能是因为它没有绑定到事件上?

作为最小的示例,使用XHTML为(不显示h:head等元素):

<h:body>
    <h:form>
       <p:dataGrid value="#{testBean.theStrings}" var="theString" rows="5" columns="2">
           <p:commandButton action="#{testBean.printOut(theString)}" value="#{theString}"/>
       </p:dataGrid>
    </h:form>
</h:body>

和后备豆

@ManagedBean
@SessionScoped
public class TestBean implements Serializable
{
  private List<String> theStrings;

  @PostConstruct
  public void setup() {
    System.out.println("Setting up array");
    theStrings = new ArrayList<>();
    for (int i = 0; i < 6; i++) {
      theStrings.add(String.valueOf(i));
    }
  }

  public List<String> getTheStrings()
  {
    return theStrings;
  }

  public void printOut(String theString) {
    System.out.println(theString);
  }
}

这将渲染6个标记为0-5的按钮,但是只有标记为5的按钮不会触发系统退出。

这里发生了什么?行不应该将项目数限制为5吗?将行数增加到6不会改变视觉输出,但是最后一个按钮开始起作用。

jsf-2 primefaces datagrid
1个回答
0
投票

我也面临同样的问题,并发现由于您的列是3而行是5,所以5/3 = 1.6666 ....... 7。经过测试。结果表明,如果rows / column输出一个Integer,则dataGrid将运行良好,但我不知道为什么。希望它能有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.