code: private static void encodeTabPane(final FacesContext context, final ResponseWriter writer, final UIComponent child,
  			final boolean isActive) throws IOException {
  
  		Tab tab = (Tab) child;
  		writer.startElement("div", tab);
  		writer.writeAttribute("id", tab.getClientId().replace(":", "_") + "_pane", "id");
  		if (tab.getDir() != null)
  			writer.writeAttribute("dir", tab.getDir(), "dir");
  		String classes = "tab-pane";
  		if (!tab.isDisabled()) {
  			if (isActive) {
  				classes += " active";
  			}
  		}
  		if (tab.getStyleClass() != null) {
  			classes += " ";
  			classes += tab.getStyleClass();
  		}
  		if (tab.getContentStyle() != null) {
  			writer.writeAttribute("style", tab.getContentStyle(), "style");
  		}
  
  		writer.writeAttribute("class", classes, "class");
  		tab.encodeChildren(context);
  		writer.endElement("div");
  	}
docs: Generate an individual tab pane. Basically, that's &lt;div role="tabpanel"
  class="tab-pane active" id="home"&lt; {{childContent}} &gt;/div&gt;
  
  @param context
  the current FacesContext
  @param writer
  the response writer
  @param tab
  the tab to be rendered.
  @param isActive
  is the current tab active?
  @throws IOException
  only thrown if something's wrong with the response writer