The best solution depends on the version of PrimeFaces you are using.
PrimeFaces> = 5.2
See another answer in this question.
workaround for <5.2
You need to solve the first problem manually by overriding your own ColumnToggler.prototype.render() function
first add styleClass="not-show-at-start" to your column that you want to include at the beginning to access the javascript render () function;
<p:column headerText="Cloumn to hide initially" width="70" styleClass="not-show-at-start"> <h:outputText value="#{entityVar.nmProcessOwner}" /> </p:column> <p:column headerText="Column to show initially" width="70"> <h:outputText value="#{entityVar.nmProcessOwner}" /> </p:column>
secondy create a javascript file and paste the code below into it, this function will assign the rendering function to ColumnToggler
PrimeFaces.widget.ColumnToggler.prototype.render = function() { //variable for creating id referance for each checkbox in ColumnToggler var id=0; this.columns = this.thead.find("> tr > th:visible:not(.ui-static-column)"); this.panel = $("<div></div>").attr("id", this.cfg.id).addClass("ui-columntoggler ui-widget ui-widget-content ui-shadow ui-corner-all").append('<ul class="ui-columntoggler-items"></ul').appendTo(document.body); this.itemContainer = this.panel.children("ul"); for (var a = 0; a < this.columns.length; a++) { id++; var b = this.columns.eq(a); $('<li class="ui-columntoggler-item"><div class="ui-chkbox ui-widget"><div id="cb'+id /*creating id for each checkbox for accessing later*/+'" class="ui-chkbox-box ui-widget ui-corner-all ui-state-default ui-state-active"><span class="ui-chkbox-icon ui-icon ui-icon-check"></span></div></div><label>' + b.children(".ui-column-title").text() + "</label></li>").data("column", b.attr("id")).appendTo(this.itemContainer); //access clumns using class reference(not-show-at-start) created in jsf page if(b.hasClass( "not-show-at-start")){ //access checkbox using id attribute created above and uncheck it //this will hide columns that have "not-show-at-start" class this.uncheck($('#cb'+id)); } } this.hide(); }
source share