code: private static void encodeTab(FacesContext context, ResponseWriter writer, UIComponent child, boolean isActive,
  			String hiddenInputFieldID, int tabIndex, boolean disabled) throws IOException {
  		Tab tab = (Tab) child;
  		if (!tab.isRendered())
  			return;
  		writer.startElement("li", tab);
  		if (tab.getDir() != null)
  			writer.writeAttribute("dir", tab.getDir(), "dir");
  		writer.writeAttribute("id", tab.getClientId(), "id");
  		writer.writeAttribute("role", "presentation", "role");
  
  		Tooltip.generateTooltip(context, tab, writer);
  
  		String classes = isActive ? "active" : "";
  		if (tab.getStyleClass() != null) {
  			classes += " ";
  			classes += tab.getStyleClass();
  		}
  		if (tab.isDisabled() || disabled) {
  			classes += " disabled";
  		}
  		if (classes.length() > 0) {
  			writer.writeAttribute("class", classes.trim(), "class");
  		}
  		if (tab.isDisabled() || disabled) {
  			writer.writeAttribute("onclick", "event.preventDefault(); return false;", null);
  		}
  
  		if (tab.getStyle() != null) {
  			writer.writeAttribute("style", tab.getStyle(), "style");
  		}
  
  		encodeTabAnchorTag(context, writer, tab, hiddenInputFieldID, tabIndex, disabled);
  		writer.endElement("li");
  		Tooltip.activateTooltips(context, tab);
  	}
docs: Generate an individual tab. Basically, that's &lt;li role="presentation"
  class="active"&gt&lt;a href="#{clientID}" role="tab" data-toggle="tab"&lt;
  {{title}} &gt;/a&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