【问题标题】:Primefaces dataGrid displaying too many items with rows and columns setPrimefaces dataGrid 显示太多的行和列设置的项目
【发布时间】:2015-05-05 02:50:42
【问题描述】:

在我的示例中,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 不会改变视觉输出,但最终按钮开始起作用。

【问题讨论】:

  • 转载。我会说这只是一个极端案例错误。从设计的角度来看,奇数行与偶数列的关系首先是出乎意料的。为什么?您真的打算隐藏此特定演示文稿中的最后一项吗? (因此最终得到一个视觉上“不完整”的网格)。您可以尝试向 PF 人员报告问题,但我不希望在这里得到高优先级。
  • 这是由于对行在此上下文中的含义有些混淆 - 我们正在考虑表格行,但显然它实际上指的是数据行。
  • 我实际上已经在他们的未解决问题中发现了这个问题,我将添加详细信息。其他想要跟踪的人的链接:code.google.com/p/primefaces/issues/…
  • 2013 年?显然不是一个高优先级;)
  • 是的,似乎不是他们的首要任务 :) 在渲染器中发现了问题,不过我现在只设置正确的行数。

标签: jsf-2 primefaces datagrid


【解决方案1】:

我遇到了同样的问题,发现是因为你的列是 3,行是 5,所以 5/3 = 1.6666……经过测试,结果表明如果行/列输出 整数dataGrid 会很好用。

我不确定为什么会这样,但它似乎解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2014-05-08
    • 2023-03-29
    相关资源
    最近更新 更多