Primefaces dataGrid显示设置了行和列的太多项目

时间:2015-03-04 07:44:19

标签: jsf-2 primefaces datagrid

在我的示例中,Primefaces dataGrid的行数设置为5,列设置为2.渲染表显示6个项目。

这大部分都没有引起注意,直到我们意识到第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>

的支持bean
@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不会改变视觉输出,但最终按钮开始工作。

1 个答案:

答案 0 :(得分:-1)

我遇到了同样的问题,并发现这是因为您的列是3,行是5,所以5/3 = 1.6666…经过测试,结果表明,如果行/列输出的是 Integer dataGrid会很好地工作。

我不确定为什么 ,但这似乎可以解决问题。