Действие p: commandButton и f: setpropertyactionlistener не вызывается в p: columngroup
Мне нужно поместить дочерние компоненты в нижний колонтитул Primefaces (p: columngroup type = "footer"), но стандартный рендерер subtable не предоставляет такой возможности. Поэтому я переопределил org.primefaces.component.SubTableRenderer, чтобы добавить дочерний рендеринг:
public class CustomSubTableRenderer extends SubTableRenderer{
@Override
protected void encodeColumnFooter(FacesContext context, SubTable table, Column column) throws IOException {
ResponseWriter writer = context.getResponseWriter();
String style = column.getStyle();
String styleClass = column.getStyleClass();
styleClass = styleClass == null ? DataTable.COLUMN_FOOTER_CLASS : DataTable.COLUMN_FOOTER_CLASS + " " + styleClass;
writer.startElement("td", null);
writer.writeAttribute("class", styleClass, null);
if(column.getRowspan() != 1) writer.writeAttribute("rowspan", column.getRowspan(), null);
if(column.getColspan() != 1) writer.writeAttribute("colspan", column.getColspan(), null);
if(style != null) writer.writeAttribute("style", style, null);
//encode children
for(UIComponent footerColumnChild : column.getChildren()) {
if(footerColumnChild.isRendered()) {
footerColumnChild.encodeAll(context);
}
}
UIComponent facet = column.getFacet("footer");
String text = column.getFooterText();
if(facet != null) {
facet.encodeAll(context);
} else if(text != null) {
writer.write(text);
}
writer.endElement("td");
}
}
Когда я помещаю некоторые дочерние компоненты в группу p: column, например:
<p:dataTable>
<p:subTable>
<p:column>..</p:column>
<p:columnGroup type="footer"> <p:row> <p:column colspan="3">
<p:commandButton id="button"
action="#{myBean.someAction}"
oncomplete="jQuery('#select').modal('show');return false;"
value="#{val.add}" alt="#{val.add}"
title="#{val.add}"> </p:commandButton>
<f:setPropertyActionListener value="#{otherBean.id}"
target="#{anotherBean.selectedBackId}" /></p:column> </p:row>
</p:columnGroup> </p:subTable>
</p:dataTable>
Кнопка визуализируется, и событие onClick вызывается нормально, но ни действие кнопки, ни f: setPropertyActionListener не вызывают. Как заставить их работать?
если я изменю конструкцию p: columnGroup type = "footer" на тег p: column, чем действие кнопки, и f: setPropertyActionListener оба будут работать нормально