Adrian,
I started to use ExpressionUIHelper.getMonthValueList() for populating
months in form dropdown elements. We are facing problem when value
returned by ExpressionUIHelper.getMonthValueList is given to Form
widget dropdown element,
{code}
+ <form name="MonthlyTrialBalance" type="single"
target="MonthlyTrialBalance" title="Find list of monthly transaction
totals"
+ header-row-style="header-row" default-table-style="basic-
table">
+
+ <field name="organizationPartyId"><hidden/></field>
+ <field name="trialBalanceMonth" required-field="true">
+ <drop-down>
+ <list-options list-name="monthList" key-name="value"
description="${description}"/>
+ </drop-down>
+ </field>
+ <field name="isPosted">
+ <drop-down>
+ <option description="${uiLabelMap.CommonYes}" key="Y"/>
+ <option description="${uiLabelMap.CommonNo}" key="N"/>
+ <option description="${uiLabelMap.CommonAll}"
key="All"/>
+ </drop-down>
+ </field>
+ <field name="submitButton" widget-style="smallSubmit"><submit
button-type="button"/></field>
+ </form>
{code}
we get following error
{error}
[component://common/widget/CommonScreens.xml#GlobalDecorator]:
java.lang.ClassCastException: java.lang.Integer cannot be cast to
java.lang.Stringjava.lang.ClassCastException: java.lang.Integer cannot
be cast to java.lang.String (java.lang.Integer cannot be cast to
java.lang.String)
---- cause
---------------------------------------------------------------------
Exception: java.lang.ClassCastException
Message: java.lang.Integer cannot be cast to java.lang.String
---- stack trace
---------------------------------------------------------------
java.lang.ClassCastException: java.lang.Integer cannot be cast to
java.lang.String
org.ofbiz.widget.form.ModelFormField
$ListOptions.addOptionValues(ModelFormField.java:1647)
org.ofbiz.widget.form.ModelFormField
$FieldInfoWithOptions.getAllOptionValues(ModelFormField.java:1525)
org
.ofbiz
.widget
.form.MacroFormRenderer.renderDropDownField(MacroFormRenderer.java:652)
org.ofbiz.widget.form.ModelFormField
$DropDownField.renderFieldString(ModelFormField.java:2954)
org
.ofbiz
.widget.form.ModelFormField.renderFieldString(ModelFormField.java:592)
org.ofbiz.widget.form.ModelForm.renderSingleFormString(ModelForm.java:
1028)
org.ofbiz.widget.form.ModelForm.renderFormString(ModelForm.java:811)
org.ofbiz.widget.screen.ModelScreenWidget
$Form.renderWidgetString(ModelScreenWidget.java:828)
org
.ofbiz
.widget
.screen
.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:138)
org.ofbiz.widget.screen.ModelScreenWidget
$DecoratorSection.renderWidgetString(ModelScreenWidget.java:691)
{error}
We can resolve this error if we modify ExpressionUiHelper.java file at
line 99 to following statement.
{code}
result.add(UtilMisc.toMap("description",
dateFormat.format(tempCal.getTime()), "value", String.valueOf(i)));
{code}
If you don't mind I'll make this modification and then replace ftl
(committed in r794667 ) with form widget code.
Regards
Anil Patel
On Jul 8, 2009, at 8:37 PM, Adrian Crum wrote:
Anil,
There are a number of UI helper methods like this already in
ExpressionUIHelper.java.
-Adrian
apa...@apache.org wrote:
Author: apatel
Date: Wed Jul 8 12:33:16 2009
New Revision: 792113
URL: http://svn.apache.org/viewvc?rev=792113&view=rev
Log:
Added method to return List of month number and month name entries
for the year. Will be useful for building dropdown lists.
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/
UtilDateTime.java
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/
UtilDateTime.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java?rev=792113&r1=792112&r2=792113&view=diff
=
=
=
=
=
=
=
=
=
=====================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/
UtilDateTime.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/
UtilDateTime.java Wed Jul 8 12:33:16 2009
@@ -33,6 +33,8 @@
import java.util.Map;
import java.util.TimeZone;
+import javolution.util.FastMap;
+
/**
* Utility class for handling java.util.Date, the java.sql data/
time classes and related
*/
@@ -955,6 +957,27 @@
}
/**
+ * Returns a List of Maps of month number and name entries -
suitable for select inputs.
+ *
+ * @param locale
+ * @return List of month number, name
+ */
+ public static List<Map<String,Object>> getMonths(Locale
locale) {
+ Calendar tempCal = Calendar.getInstance(locale);
+ tempCal.set(Calendar.MONTH, Calendar.JANUARY);
+ SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM",
locale);
+ List<Map<String,Object>> resultList = new
ArrayList<Map<String,Object>>();
+ for (int i = Calendar.JANUARY; i <=
tempCal.getActualMaximum(Calendar.MONTH); i++) {
+ Map<String,Object> monthEntry = new
FastMap<String,Object>();
+
monthEntry.put("monthNumber",tempCal.get(Calendar.MONTH));
+
monthEntry.put("monthName",dateFormat.format(tempCal.getTime()));
+ resultList.add(monthEntry);
+ tempCal.roll(Calendar.MONTH, 1);
+ }
+ return resultList;
+ }
+
+ /**
* Returns an initialized DateFormat object.
*
* @param dateFormat