You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2009/12/15 23:29:01 UTC
svn commit: r891039 - in /myfaces/tomahawk/trunk:
core/src/main/java/org/apache/myfaces/custom/selectitems/
core12/src/main/java/org/apache/myfaces/custom/selectitems/
examples/simple/src/main/java/org/apache/myfaces/examples/selectitems/
examples/simp...
Author: lu4242
Date: Tue Dec 15 22:29:01 2009
New Revision: 891039
URL: http://svn.apache.org/viewvc?rev=891039&view=rev
Log:
TOMAHAWK-1403 t:selectItems behaviour with Map values is weird
Modified:
myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/selectitems/AbstractUISelectItems.java
myfaces/tomahawk/trunk/core12/src/main/java/org/apache/myfaces/custom/selectitems/AbstractUISelectItems.java
myfaces/tomahawk/trunk/examples/simple/src/main/java/org/apache/myfaces/examples/selectitems/SelectItemsBean.java
myfaces/tomahawk/trunk/examples/simple/src/main/webapp/selectItems.jsp
Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/selectitems/AbstractUISelectItems.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/selectitems/AbstractUISelectItems.java?rev=891039&r1=891038&r2=891039&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/selectitems/AbstractUISelectItems.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/selectitems/AbstractUISelectItems.java Tue Dec 15 22:29:01 2009
@@ -69,13 +69,31 @@
* @JSFProperty
*/
public abstract Object getItemValue();
+
+ /**
+ * Only applies when value points to a map. Use the Entry instance instead
+ * the value for resolve EL Expressions
+ *
+ * @since 1.1.10
+ * @JSFProperty
+ * defaultValue = "false"
+ */
+ public abstract boolean isUseEntryAsItem();
public Object getValue() {
Object value = super.getValue();
- return createSelectItems(value);
+ String var = getVar();
+ if (var != null && var.length() > 0)
+ {
+ return createSelectItems(value);
+ }
+ else
+ {
+ return value;
+ }
}
- private SelectItem[] createSelectItems(Object value) {
+ private Object createSelectItems(Object value) {
List items = new ArrayList();
if (value instanceof SelectItem[]) {
@@ -102,16 +120,29 @@
}
else if (value instanceof Map) {
Map map = (Map) value;
- for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
- Entry currentItem = (Entry) iter.next();
- putIteratorToRequestParam(currentItem.getValue());
- SelectItem selectItem = createSelectItem();
- removeIteratorFromRequestParam();
- items.add(selectItem);
+ if (isUseEntryAsItem())
+ {
+ for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
+ Entry currentItem = (Entry) iter.next();
+ putIteratorToRequestParam(currentItem);
+ SelectItem selectItem = createSelectItem();
+ removeIteratorFromRequestParam();
+ items.add(selectItem);
+ }
+ }
+ else
+ {
+ for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
+ Entry currentItem = (Entry) iter.next();
+ putIteratorToRequestParam(currentItem.getValue());
+ SelectItem selectItem = createSelectItem();
+ removeIteratorFromRequestParam();
+ items.add(selectItem);
+ }
}
}
- return (SelectItem[]) items.toArray(new SelectItem[0]);
+ return items.toArray(new SelectItem[0]);
}
private SelectItem createSelectItem() {
Modified: myfaces/tomahawk/trunk/core12/src/main/java/org/apache/myfaces/custom/selectitems/AbstractUISelectItems.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core12/src/main/java/org/apache/myfaces/custom/selectitems/AbstractUISelectItems.java?rev=891039&r1=891038&r2=891039&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core12/src/main/java/org/apache/myfaces/custom/selectitems/AbstractUISelectItems.java (original)
+++ myfaces/tomahawk/trunk/core12/src/main/java/org/apache/myfaces/custom/selectitems/AbstractUISelectItems.java Tue Dec 15 22:29:01 2009
@@ -94,9 +94,27 @@
*/
public abstract Object getItemDisabled();
+ /**
+ * Only applies when value points to a map. Use the Entry instance instead
+ * the value for resolve EL Expressions
+ *
+ * @since 1.1.10
+ * @JSFProperty
+ * defaultValue = "false"
+ */
+ public abstract boolean isUseEntryAsItem();
+
public Object getValue() {
Object value = super.getValue();
- return createSelectItems(value);
+ String var = getVar();
+ if (var != null && var.length() > 0)
+ {
+ return createSelectItems(value);
+ }
+ else
+ {
+ return value;
+ }
}
private SelectItem[] createSelectItems(Object value) {
@@ -126,12 +144,25 @@
}
else if (value instanceof Map) {
Map map = (Map) value;
- for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
- Entry currentItem = (Entry) iter.next();
- putIteratorToRequestParam(currentItem.getValue());
- SelectItem selectItem = createSelectItem();
- removeIteratorFromRequestParam();
- items.add(selectItem);
+ if (isUseEntryAsItem())
+ {
+ for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
+ Entry currentItem = (Entry) iter.next();
+ putIteratorToRequestParam(currentItem);
+ SelectItem selectItem = createSelectItem();
+ removeIteratorFromRequestParam();
+ items.add(selectItem);
+ }
+ }
+ else
+ {
+ for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
+ Entry currentItem = (Entry) iter.next();
+ putIteratorToRequestParam(currentItem.getValue());
+ SelectItem selectItem = createSelectItem();
+ removeIteratorFromRequestParam();
+ items.add(selectItem);
+ }
}
}
Modified: myfaces/tomahawk/trunk/examples/simple/src/main/java/org/apache/myfaces/examples/selectitems/SelectItemsBean.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/examples/simple/src/main/java/org/apache/myfaces/examples/selectitems/SelectItemsBean.java?rev=891039&r1=891038&r2=891039&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/examples/simple/src/main/java/org/apache/myfaces/examples/selectitems/SelectItemsBean.java (original)
+++ myfaces/tomahawk/trunk/examples/simple/src/main/java/org/apache/myfaces/examples/selectitems/SelectItemsBean.java Tue Dec 15 22:29:01 2009
@@ -21,6 +21,8 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
import org.apache.myfaces.examples.listexample.SimpleCar;
@@ -29,6 +31,8 @@
private List carList;
private String selectedCarColor;
+
+ private Map carMap;
public List getCarList() {
if(carList == null) {
@@ -49,7 +53,34 @@
list.add(new SimpleCar(4, "Car 4", "green"));
return list;
}
+
+ public Map getCarMap() {
+ if (carMap == null) {
+ carMap = createCarMap();
+ }
+ return carMap;
+ }
+
+ public void setCarMap(Map carMap)
+ {
+ this.carMap = carMap;
+ }
+ private Map createCarMap() {
+ Map list = new TreeMap();
+ list.put(new Integer(1), new SimpleCar(1, "Car 1", "blue"));
+ list.put(new Integer(2), new SimpleCar(2, "Car 2", "white"));
+ list.put(new Integer(3), new SimpleCar(3, "Car 3", "red"));
+ list.put(new Integer(4), new SimpleCar(4, "Car 4", "green"));
+ /*
+ list.put(new Integer(1), "Car 1");
+ list.put(new Integer(2), "Car 2");
+ list.put(new Integer(3), "Car 3");
+ list.put(new Integer(4), "Car 4");
+ */
+ return list;
+ }
+
public String getSelectedCarColor() {
return selectedCarColor;
}
Modified: myfaces/tomahawk/trunk/examples/simple/src/main/webapp/selectItems.jsp
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/examples/simple/src/main/webapp/selectItems.jsp?rev=891039&r1=891038&r2=891039&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/examples/simple/src/main/webapp/selectItems.jsp (original)
+++ myfaces/tomahawk/trunk/examples/simple/src/main/webapp/selectItems.jsp Tue Dec 15 22:29:01 2009
@@ -32,17 +32,40 @@
<f:view>
<h:form>
- <h:selectOneMenu id="menu1" value="#{selectItemsBean.selectedCarColor}">
- <t:selectItems value="#{selectItemsBean.carList}" var="Car" itemLabel="#{Car.type}" itemValue="#{Car.color}" />
- </h:selectOneMenu>
-
- <h:selectOneRadio id="radio1" value="#{selectItemsBean.selectedCarColor}">
- <t:selectItems value="#{selectItemsBean.carList}" var="Car" itemLabel="#{Car.type}" itemValue="#{Car.color}" />
- </h:selectOneRadio>
+
+ <h:outputText value ="List" />
+
+ <h:panelGrid columns="1">
+ <h:selectOneMenu id="menu1" value="#{selectItemsBean.selectedCarColor}">
+ <t:selectItems value="#{selectItemsBean.carList}" var="Car" itemLabel="#{Car.type}" itemValue="#{Car.color}" />
+ </h:selectOneMenu>
+
+ <h:selectOneRadio id="radio1" value="#{selectItemsBean.selectedCarColor}">
+ <t:selectItems value="#{selectItemsBean.carList}" var="Car" itemLabel="#{Car.type}" itemValue="#{Car.color}" />
+ </h:selectOneRadio>
+
+ <h:selectOneListbox id="list1" value="#{selectItemsBean.selectedCarColor}">
+ <t:selectItems value="#{selectItemsBean.carList}" var="Car" itemLabel="#{Car.type}" itemValue="#{Car.color}" />
+ </h:selectOneListbox>
+ </h:panelGrid>
+
+ <h:outputText value ="Map" />
- <h:selectOneListbox id="list1" value="#{selectItemsBean.selectedCarColor}">
- <t:selectItems value="#{selectItemsBean.carList}" var="Car" itemLabel="#{Car.type}" itemValue="#{Car.color}" />
- </h:selectOneListbox>
+ <h:panelGrid columns="1">
+ <h:selectOneMenu id="menu2" value="#{selectItemsBean.selectedCarColor}">
+ <t:selectItems value="#{selectItemsBean.carMap}" var="Car" itemLabel="#{Car.type}" itemValue="#{Car.color}" />
+ </h:selectOneMenu>
+
+ <h:selectOneRadio id="radio2" value="#{selectItemsBean.selectedCarColor}">
+ <t:selectItems value="#{selectItemsBean.carMap}" var="Car" itemLabel="#{Car.type}" itemValue="#{Car.color}" />
+ </h:selectOneRadio>
+
+ <h:selectOneListbox id="list2" value="#{selectItemsBean.selectedCarColor}">
+ <t:selectItems value="#{selectItemsBean.carMap}" var="Car" itemLabel="#{Car.type}" itemValue="#{Car.color}" />
+ </h:selectOneListbox>
+ </h:panelGrid>
+
+ <h:commandButton value="GO!" action="doSomething"/>
</h:form>
</f:view>