I don't know why the styleClass
attribute is ignored by default (at least until PrimeFaces version 6.2), but you can create a custom renderer that appends its value to the HTML output. A simple drop in replacement for the default PrimeFaces renderer looks like this:
public class PanelGridBodyRowRenderer extends CoreRenderer implements HelperRowRenderer {
@Override
public void encode(FacesContext context, Row row) throws IOException {
ResponseWriter writer = context.getResponseWriter();
String rowStyleClass = PanelGrid.TABLE_ROW_CLASS;
String userRowStyleClass = row.getStyleClass();
if (userRowStyleClass != null) {
rowStyleClass = rowStyleClass + " " + userRowStyleClass;
}
writer.startElement("tr", row);
writer.writeAttribute("class", rowStyleClass, null);
writer.writeAttribute("role", "row", null);
renderChildren(context, row);
writer.endElement("tr");
}
}
For PrimeFaces version 6.2 you can simply create this renderer class within the package org.primefaces.component.row.renderer
in your WAR. The classloader will then load your renderer instead of the identical renderer class within the PrimFaces JAR.
For more information on custom components and renderers see this answer.