我有一个动态创建的HtmlPanelGrid,它运行正常。我想使用相同的数据,但这次将它们分组,它将无法工作。当前的层次结构是:
<h:panelGrid binding="#{configurationManagedBean.dynamicAddonGrid}"/>
通常情况下,我这样表现出来:
<ui:repeat var="group" value="#{configurationManagedBean.dynamicAddonGrid.children}">
<h:panelGrid binding="#{group}" />
</ui:repeat>
其中dynamicAddonGrid表示父元素。 但是,我想为每个第一级子元素显示一个新的panelGrid。所以我改变了这样:
HtmlPanelGrid dynamicAddonGrid = new HtmlPanelGrid();
for(int gridIndex = 0; gridIndex < addonGrids.size(); gridIndex++){
AddonGrid currentGrid = addonGrids.get(gridIndex);
HtmlPanelGrid addonComponentPanelGrid = new HtmlPanelGrid();
addonComponentPanelGrid.setTitle(currentGrid.getDefinition());
addonComponentPanelGrid.setColumns(8);
for(int addonIndex = 0; addonIndex < currentGrid.getAddonList().size() ;addonIndex++){
Addon currentAddon = currentGrid.getAddonList().get(addonIndex);
HtmlOutputLabel labelComponent = new HtmlOutputLabel();
addonComponentPanelGrid.getChildren().add(labelComponent);
HtmlCommandButton commandButton = new HtmlCommandButton();
addonComponentPanelGrid.getChildren().add(commandButton);
}
dynamicAddonGrid.getChildren().add(addonComponentPanelGrid);
}
但它没有显示任何内容。这就是我在辅助bean中创建这个层次结构的方法:
$(document).ready(function () {
$('input').keyup(function() {
var $th = $(this);
$th.val($th.val().replace(/[-]/g, function(str) {
//alert('You typed " ' + str + ' ".\n\nPlease use only letters and numbers.');
return '';
}));
});
});
我省略了不相关的业务逻辑以便澄清。
父级和第一级子元素都是HtmlPanelGrids,但不知何故,我无法对它们进行分组。我的意思是我可以,但它只是没有显示。好像我忽视了什么。任何帮助将不胜感激。