在我的示例中,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不会改变视觉输出,但是最后一个按钮开始起作用。
我也面临同样的问题,并发现由于您的列是3而行是5,所以5/3 = 1.6666 ....... 7。经过测试。结果表明,如果rows / column输出一个Integer,则dataGrid将运行良好,但我不知道为什么。希望它能有所帮助。