protected void encodeMenuItem(FacesContext context, AbstractMenu menu, MenuItem menuitem) throws IOException { ResponseWriter writer = context.getResponseWriter(); String title = menuitem.getTitle(); String style = menuitem.getStyle(); boolean disabled = menuitem.isDisabled(); String rel = menuitem.getRel(); writer.startElement("a", null); writer.writeAttribute("tabindex", "-1", null); if (shouldRenderId(menuitem)) { writer.writeAttribute("id", menuitem.getClientId(), null); } if (title != null) { writer.writeAttribute("title", title, null); } String styleClass = this.getLinkStyleClass(menuitem); if (disabled) { styleClass = styleClass + " ui-state-disabled"; } writer.writeAttribute("class", styleClass, null); if (style != null) { writer.writeAttribute("style", style, null); } if (rel != null) { writer.writeAttribute("rel", rel, null); } if (disabled) { writer.writeAttribute("href", "#", null); writer.writeAttribute("onclick", "return false;", null); } else { setConfirmationScript(context, menuitem); String onclick = menuitem.getOnclick(); // GET if (menuitem.getUrl() != null || menuitem.getOutcome() != null) { String targetURL = getTargetURL(context, (UIOutcomeTarget) menuitem); writer.writeAttribute("href", targetURL, null); if (menuitem.getTarget() != null) { writer.writeAttribute("target", menuitem.getTarget(), null); } } // POST else { writer.writeAttribute("href", "#", null); UIComponent form = ComponentTraversalUtils.closestForm(context, menu); if (form == null) { throw new FacesException("MenuItem must be inside a form element"); } String command; if (menuitem.isDynamic()) { String menuClientId = menu.getClientId(context); Map<String, List<String>> params = menuitem.getParams(); if (params == null) { params = new LinkedHashMap<String, List<String>>(); } List<String> idParams = new ArrayList<String>(); idParams.add(menuitem.getId()); params.put(menuClientId + "_menuid", idParams); command = menuitem.isAjax() ? buildAjaxRequest(context, menu, (AjaxSource) menuitem, form, params) : buildNonAjaxRequest(context, menu, form, menuClientId, params, true); } else { command = menuitem.isAjax() ? buildAjaxRequest(context, (AjaxSource) menuitem, form) : buildNonAjaxRequest( context, ((UIComponent) menuitem), form, ((UIComponent) menuitem).getClientId(context), true); } onclick = (onclick == null) ? command : onclick + ";" + command; } if (onclick != null) { if (menuitem.requiresConfirmation()) { writer.writeAttribute("data-pfconfirmcommand", onclick, null); writer.writeAttribute("onclick", menuitem.getConfirmationScript(), "onclick"); } else { writer.writeAttribute("onclick", onclick, null); } } } encodeMenuItemContent(context, menu, menuitem); writer.endElement("a"); }