Author: dmorozov
Date: 2008-11-05 06:02:27 -0500 (Wed, 05 Nov 2008)
New Revision: 11028
Modified:
trunk/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java
trunk/ui/combobox/src/main/templates/combobox.jspx
Log:
https://jira.jboss.org/jira/browse/RF-4552
Modified:
trunk/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java
===================================================================
---
trunk/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java 2008-11-05
11:00:25 UTC (rev 11027)
+++
trunk/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java 2008-11-05
11:02:27 UTC (rev 11028)
@@ -88,47 +88,38 @@
}
public List<Object> encodeItems(FacesContext context, UIComponent component)
throws IOException, IllegalArgumentException {
- if (!isAcceptableComponent(component)) {
- return null;
- }
-
- UIComboBox comboBox = (UIComboBox) component;
- Object suggestionValues = comboBox.getSuggestionValues();
- ResponseWriter writer = context.getResponseWriter();
- List <Object>values = encodeSuggestionValues(context, component, writer,
suggestionValues);
- List<SelectItem> selectItems = SelectUtils.getSelectItems(context, component);
- for (SelectItem selectItem : selectItems) {
- String value = getConvertedStringValue(context, comboBox, selectItem.getValue());
- values.add(value);
- encodeSuggestion(writer, comboBox, value, RICH_COMBOBOX_ITEM_CLASSES);
-
- }
- return values;
+ List <Object>values = new ArrayList<Object>();
+ if (isAcceptableComponent(component)) {
+ UIComboBox comboBox = (UIComboBox) component;
+ values.addAll(encodeSuggestionValues(context, comboBox));
+ List<SelectItem> selectItems = SelectUtils.getSelectItems(context, component);
+ for (SelectItem selectItem : selectItems) {
+ values.add(encodeSuggestion(context, comboBox, selectItem.getValue(),
RICH_COMBOBOX_ITEM_CLASSES));
+ }
+ }
+ return values;
}
- public List<Object> encodeSuggestionValues(FacesContext context, UIComponent
component, ResponseWriter writer,
- Object suggestionValues) throws IOException, IllegalArgumentException {
- ArrayList<Object> values = new ArrayList<Object>();
- if (suggestionValues != null) {
- if (suggestionValues instanceof Collection) {
- Collection<Object> collection = (Collection) suggestionValues;
- for (Object suggestionValue : collection) {
- String value = getConvertedStringValue(context, component, suggestionValue);
- values.add(value);
- encodeSuggestion(writer, component, value, RICH_COMBOBOX_ITEM_CLASSES);
+ public List<Object> encodeSuggestionValues(FacesContext context, UIComboBox
combobox) throws IOException, IllegalArgumentException {
+
+ List<Object> values = new ArrayList<Object>();
+ Object suggestionValues = combobox.getSuggestionValues();
+ if (suggestionValues != null) {
+ if (suggestionValues instanceof Collection) {
+ Collection collection = (Collection) suggestionValues;
+ for (Object suggestionValue : collection) {
+ values.add(encodeSuggestion(context, combobox, suggestionValue,
RICH_COMBOBOX_ITEM_CLASSES));
+ }
+ } else if (suggestionValues.getClass().isArray()) {
+ Object[] suggestions = (Object[]) suggestionValues;
+ for (Object suggestionValue: suggestions) {
+ values.add(encodeSuggestion(context, combobox, suggestionValue,
RICH_COMBOBOX_ITEM_CLASSES));
+ }
+ } else {
+ throw new IllegalArgumentException("suggestionValues should be Collection or
Array");
+ }
}
- } else if (suggestionValues.getClass().isArray()) {
- Object[] suggestions = (Object[]) suggestionValues;
- for (int i = 0; i < suggestions.length; i++) {
- String value = getConvertedStringValue(context, component, suggestions[i]);
- values.add(value);
- encodeSuggestion(writer, component, value, RICH_COMBOBOX_ITEM_CLASSES);
- }
- } else {
- throw new IllegalArgumentException("suggestionValues should be Collection or
Array");
- }
- }
- return values;
+ return values;
}
@Override
@@ -140,12 +131,18 @@
return InputUtils.getConvertedStringValue(context, component, value);
}
- public void encodeSuggestion(ResponseWriter writer, UIComponent component, String
value, String classes) throws IOException {
- writer.startElement(HTML.SPAN_ELEM, component);
- writer.writeAttribute(HTML.class_ATTRIBUTE, classes, null);
- writer.writeText(value, null);
- writer.endElement(HTML.SPAN_ELEM);
- }
+ public String encodeSuggestion(FacesContext context, UIComponent component, Object
value, String classes) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ String encodedValue = null;
+ if(writer != null) {
+ encodedValue = getConvertedStringValue(context, component, value);
+ writer.startElement(HTML.SPAN_ELEM, component);
+ writer.writeAttribute(HTML.class_ATTRIBUTE, classes, null);
+ writer.writeText(value, null);
+ writer.endElement(HTML.SPAN_ELEM);
+ }
+ return encodedValue;
+ }
protected boolean isAcceptableComponent(UIComponent component) {
return component != null &&
this.getComponentClass().isAssignableFrom(component.getClass());
Modified: trunk/ui/combobox/src/main/templates/combobox.jspx
===================================================================
--- trunk/ui/combobox/src/main/templates/combobox.jspx 2008-11-05 11:00:25 UTC (rev
11027)
+++ trunk/ui/combobox/src/main/templates/combobox.jspx 2008-11-05 11:02:27 UTC (rev
11028)
@@ -262,12 +262,7 @@
</div>
<jsp:scriptlet>
<![CDATA[
-
- String hiddenValue = null;
- if (items.contains(value)) {
- variables.setVariable("hiddenValue", value);
- }
-
+ variables.setVariable("hiddenValue", value);
]]>
</jsp:scriptlet>
<input id="#{clientId}comboboxValue" name="#{clientId}"
type="hidden" value="#{hiddenValue}"/>