ensure initial value is set when using DataProvider. CLK-745
git-svn-id: https://svn.apache.org/repos/asf/click/trunk/click@1053753 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/org/apache/click/control/Select.java b/framework/src/org/apache/click/control/Select.java
index f297089..cad1977 100644
--- a/framework/src/org/apache/click/control/Select.java
+++ b/framework/src/org/apache/click/control/Select.java
@@ -871,6 +871,9 @@
*/
public void setOptionList(List options) {
optionList = options;
+ if (optionList != null) {
+ setInitialValue();
+ }
}
/**
diff --git a/framework/test/org/apache/click/control/SelectTest.java b/framework/test/org/apache/click/control/SelectTest.java
index a6db38e..239cd7c 100644
--- a/framework/test/org/apache/click/control/SelectTest.java
+++ b/framework/test/org/apache/click/control/SelectTest.java
@@ -23,6 +23,7 @@
import java.util.List;
import junit.framework.TestCase;
import org.apache.click.MockContext;
+import org.apache.click.dataprovider.DataProvider;
/**
* Test Select behavior.
@@ -149,4 +150,37 @@
// restored
select.getSelectedValues().add("male");
}
+
+ /**
+ *
+ */
+ public void testSetInitialValue() {
+ // Setup Select
+ Select select = new Select("gender");
+ select.add(new Option("male"));
+ select.add(new Option("female"));
+
+ String expectedValue = "male";
+
+ // Test initial value
+ assertEquals(expectedValue, select.getValue());
+ select.setValue(null);
+ select.setOptionList(null);
+
+ select.setDataProvider(new DataProvider() {
+
+ public List getData() {
+ List list = new ArrayList();
+ list.add(new Option("male"));
+ list.add(new Option("female"));
+ return list;
+ }
+ });
+
+ // Trigger dataProvider
+ select.getOptionList();
+
+ // Test initial value
+ assertEquals(expectedValue, select.getValue());
+ }
}