【发布时间】: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