code: private static void encodeTabLinks(FacesContext context, ResponseWriter writer, TabView tabView,
  			int currentlyActiveIndex, List<UIComponent> tabs, String clientId, String hiddenInputFieldID)
  			throws IOException {
  		writer.startElement("ul", tabView);
  		writer.writeAttribute("id", clientId, "id");
  		Tooltip.generateTooltip(context, tabView, writer);
  		String classes = "nav ";
  		if ("left".equalsIgnoreCase(tabView.getTabPosition()) || "right".equalsIgnoreCase(tabView.getTabPosition())) {
  			classes += " nav-pills nav-stacked";
  		} else {
  			classes = classes + (tabView.isPills() ? " nav-pills" : " nav-tabs");
  		}
  
  		if (tabView.getStyleClass() != null) {
  			classes += " ";
  			classes += tabView.getStyleClass();
  		}
  
  		writer.writeAttribute("class", classes, "class");
  
  		String role = "tablist";
  		AJAXRenderer.generateBootsFacesAJAXAndJavaScript(context, tabView, writer, false);
  		R.encodeHTML4DHTMLAttrs(writer, tabView.getAttributes(), new String[] { "style" });
  		if (tabView.getRole() != null) {
  			role = tabView.getRole();
  		}
  
  		writer.writeAttribute("role", role, "role");
  
  		encodeTabs(context, writer, tabs, currentlyActiveIndex, hiddenInputFieldID, tabView.isDisabled());
  		writer.endElement("ul");
  	}
docs: Encode the list of links that render the tabs
  
  @param context
  @param writer
  @param tabView
  @param currentlyActiveIndex
  @param tabs
  @param clientId
  @param hiddenInputFieldID
  @throws IOException