@Override public void decode(FacesContext context, UIComponent component) { UISelectOne selectOne = (UISelectOne) component; if (!shouldDecode(selectOne)) { return; } decodeBehaviors(context, selectOne); String clientId = getSubmitParam(context, selectOne); Map<String, String> params = context.getExternalContext().getRequestParameterMap(); if (!params.containsKey(clientId)) { return; } String submittedValue = params.get(clientId); String[] submittedValues = validateSubmittedValues(context, selectOne, (Object[]) getValues(selectOne), submittedValue); submittedValue = submittedValues.length == 0 ? submittedValue : submittedValues[0]; selectOne.setSubmittedValue(submittedValue); }
@Override public void decode(FacesContext context, UIComponent component) { if (!shouldDecode(component)) { return; } UISelectOne selectOne = (UISelectOne) component; String clientId = getSubmitParam(context, selectOne); Map<String, String> params = context.getExternalContext().getRequestParameterMap(); if (params.containsKey(clientId)) { selectOne.setSubmittedValue(params.get(clientId)); } else { selectOne.setSubmittedValue(""); } decodeBehaviors(context, selectOne); }
@Override public void decode(FacesContext context, UIComponent component) { SelectOneMenu menu = (SelectOneMenu) component; if (!shouldDecode(menu)) { return; } if (!menu.isEditable()) { super.decode(context, component); return; } decodeBehaviors(context, menu); Map<String, String> params = context.getExternalContext().getRequestParameterMap(); // default to user entered input String editableInputId = menu.getClientId(context) + "_editableInput"; if (!params.containsKey(editableInputId)) { return; } String submittedValue = params.get(editableInputId); // #2862 check if it matches a label and if so use the value SelectItem match = null; for (SelectItem item : getSelectItems(context, menu)) { if (item.getLabel().equalsIgnoreCase(submittedValue)) { match = item; break; } } menu.setSubmittedValue(match != null ? getOptionAsString(context, menu, menu.getConverter(), match.getValue()) : submittedValue); }
@Override public void decode(FacesContext context, UIComponent component) { if (!shouldDecode(component)) { return; } SelectOneMenu menu = (SelectOneMenu) component; if (menu.isEditable()) { Map<String, String> params = context.getExternalContext().getRequestParameterMap(); // default to user entered input String editorInput = params.get(menu.getClientId(context) + "_editableInput"); menu.setSubmittedValue(editorInput); // #2862 check if it matches a label and if so use the value List<SelectItem> selectItems = getSelectItems(context, menu); for (int i = 0; i < selectItems.size(); i++) { SelectItem item = selectItems.get(i); if (item.getLabel().equalsIgnoreCase(editorInput)) { menu.setSubmittedValue(item.getValue()); break; } } decodeBehaviors(context, menu); } else { super.decode(context, component); } }