Author: husted Date: Sat Dec 30 19:32:03 2006 New Revision: 491377 URL: http://svn.apache.org/viewvc?view=rev&rev=491377 Log: WW-1579 "DropdownDateTimePicker is not loading value from property." Apply patch submitted by Musachy Barroso.
Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/dropdowndatepicker/index.jsp struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/dropdowntimepicker/index.jsp struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DropdownDateTimePicker.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/DropdownDateTimePickerTag.java struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld struts/struts2/trunk/core/src/main/resources/template/simple/dropdowndatetimepicker.ftl struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DropDownTimePicker-1.txt struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DropdownDatePicker-1.txt Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/dropdowndatepicker/index.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/dropdowndatepicker/index.jsp?view=diff&rev=491377&r1=491376&r2=491377 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/dropdowndatepicker/index.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/dropdowndatepicker/index.jsp Sat Dec 30 19:32:03 2006 @@ -12,11 +12,11 @@ <body> <p>toggleTye="wipe":</p> - <input dojoType="dropdowndatepicker" value="2006-10-31" containerToggle="wipe" containerToggleDuration="300"> + <s:dropdowndatetimepicker value="2006-10-31" toggleType="wipe" toggleDuration="300" name="test"/> <p>toggleTye="explode":</p> - <input dojoType="dropdowndatepicker" value="2006-07-22" containerToggle="explode" containerToggleDuration="500"> + <s:dropdowndatetimepicker value="2006-07-22" toggleType="explode" toggleDuration="500"/> <p>toggleTye="fade":</p> - <input dojoType="dropdowndatepicker" value="2006-06-30" containerToggle="fade" containerToggleDuration="500"> + <s:dropdowndatetimepicker value="2006-06-30" toggleType="fade" toggleDuration="500"/> <p>With value="today"</p> <s:dropdowndatetimepicker name="dddp1" value="today" /> <p>US format, empty</p> @@ -33,13 +33,7 @@ <s:dropdowndatetimepicker name="dddp12" value="2006-06-26" formatLength="long" language="en-us" /> <p>German format with initial date of 2006-06-26 and long formatting (parse not supported)</p> <s:dropdowndatetimepicker name="dddp13" value="2006-06-26" formatLength="long" language="de" /> -<p>Value sent as RFC3339</p> - <s:dropdowndatetimepicker name="dddp14" saveFormat="rfc" value="2006-06-26" language="en-us" /> -<p>Custom save format: yyyy!dd!mm</p> - <s:dropdowndatetimepicker name="dddp15" saveFormat="yyyy!dd!MM" value="2006-06-26" language="en-us" /> -<p>Value sent as time since Unix Epoch</p> - <s:dropdowndatetimepicker name="dddp16" saveFormat="posix" value="2006-06-26" language="en-us" /> - +<br/> <s:include value="../footer.jsp"/> </body> </html> Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/dropdowntimepicker/index.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/dropdowntimepicker/index.jsp?view=diff&rev=491377&r1=491376&r2=491377 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/dropdowntimepicker/index.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/dropdowntimepicker/index.jsp Sat Dec 30 19:32:03 2006 @@ -12,11 +12,11 @@ <body> toggleTye="wipe": - <s:dropdowndatetimepicker type="time" value="10:30" toggleType="wipe" toggleDuration="300"/> + <s:dropdowndatetimepicker type="time" value="10:30" toggleType="wipe" toggleDuration="300"/> <br/> -toggleTye="explode": - <s:dropdowndatetimepicker type="time" value="13:00" toggleType="explode" toggleDuration="500"/> +toggleTye="explode": + <s:dropdowndatetimepicker type="time" value="13:00" toggleType="explode" toggleDuration="500"/> <br/> toggleTye="fade": @@ -27,7 +27,7 @@ <s:dropdowndatetimepicker type="time" name="dddp1" value="today" /> <br/> -US format, empty +US format, empty <s:dropdowndatetimepicker type="time" name="dddp2" language="en-us" /> <br/> @@ -35,15 +35,9 @@ <s:dropdowndatetimepicker type="time" name="dddp7" language="de" /> <br/> -In Dutch: +In Dutch: <s:dropdowndatetimepicker type="time" name="dddp8" language="nl" /> <br/> -Value sent as RFC3339 - <s:dropdowndatetimepicker type="time" name="dddp14" saveFormat="rfc" value="01:00" language="en-us" /> -<br/> - -Value sent as time since Unix Epoch - <s:dropdowndatetimepicker type="time" name="dddp16" saveFormat="posix" value="3:45" language="en-us" /> <br/> <s:include value="../footer.jsp"/> Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DropdownDateTimePicker.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DropdownDateTimePicker.java?view=diff&rev=491377&r1=491376&r2=491377 ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DropdownDateTimePicker.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DropdownDateTimePicker.java Sat Dec 30 19:32:03 2006 @@ -17,9 +17,16 @@ */ package org.apache.struts2.components; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import com.opensymphony.xwork2.util.ValueStack; /** @@ -28,28 +35,33 @@ * Renders picker(datepicker or timepicker) in a dropdown container. * </p> * <p> - * It is possible to customize the user-visible formatting - * with either the formatLength or displayFormat attributes. The value sent to the server is - * typically a locale-independent value in a hidden field as defined by the name attribute. - * RFC3339 representation is used by default, but other options are available with saveFormat + * It is possible to customize the user-visible formatting with either the + * formatLength or displayFormat attributes. The value sent to the server is + * typically a locale-independent value in a hidden field as defined by the name + * attribute. RFC3339 representation is used by default, but other options are + * available with saveFormat * </p> * * @s.tag name="dropdowndatetimepicker" tld-body-content="JSP" - * tld-tag-class="org.apache.struts2.views.jsp.ui.DropdownDateTimePickerTag" description="Render - * a dropdown picker(datepicker or timepicker)" + * tld-tag-class="org.apache.struts2.views.jsp.ui.DropdownDateTimePickerTag" + * description="Render a dropdown picker(datepicker or timepicker)" */ public class DropdownDateTimePicker extends DatePicker { final public static String TEMPLATE = "dropdowndatetimepicker"; + final private static SimpleDateFormat RFC3399_FORMAT = new SimpleDateFormat( + "yyyy-MM-dd'T'HH:mm:ss"); protected String iconPath; protected String formatLength; protected String displayFormat; - protected String saveFormat; protected String toggleType; protected String toggleDuration; protected String type; - public DropdownDateTimePicker(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { + protected static Log log = LogFactory.getLog(DropdownDateTimePicker.class); + + public DropdownDateTimePicker(ValueStack stack, HttpServletRequest request, + HttpServletResponse response) { super(stack, request, response); } @@ -66,20 +78,65 @@ addParameter("formatLength", findString(formatLength)); if(displayFormat != null) addParameter("displayFormat", findString(displayFormat)); - if(saveFormat != null) - addParameter("saveFormat", findString(saveFormat)); if(toggleType != null) addParameter("toggleType", findString(toggleType)); if(toggleDuration != null) - addParameter("toggleDuration", findValue(toggleDuration, Integer.class)); + addParameter("toggleDuration", findValue(toggleDuration, + Integer.class)); if(type != null) addParameter("type", findString(type)); else addParameter("type", "date"); + + // format the value to RFC 3399 + if(parameters.containsKey("value")) { + parameters.put("nameValue", format(parameters.get("value"))); + } else { + if(name != null) { + String expr = name; + if(altSyntax()) { + expr = "%{" + expr + "}"; + } + addParameter("nameValue", format(findValue(expr))); + } + } + + } + + + private String format(Object obj) { + if(obj == null) + return null; + + if(obj instanceof Date) { + return RFC3399_FORMAT.format((Date) obj); + } else { + // try to parse a date + String dateStr = obj.toString(); + if(dateStr.equalsIgnoreCase("today")) + return RFC3399_FORMAT.format(new Date()); + + try { + Date date = null; + if(this.displayFormat != null) { + SimpleDateFormat format = new SimpleDateFormat( + this.displayFormat); + date = format.parse(dateStr); + } else { + // last resource + date = SimpleDateFormat.getInstance().parse(dateStr); + } + return RFC3399_FORMAT.format(date); + } catch (ParseException e) { + log.error("Could not parse date", e); + return dateStr; + } + } } /** - * A pattern used for the visual display of the formatted date, e.g. dd/MM/yyyy. + * A pattern used for the visual display of the formatted date, e.g. + * dd/MM/yyyy. * * @s.tagattribute required="false" type="String" */ @@ -88,7 +145,8 @@ } /** - * Type of formatting used for visual display, appropriate to locale (choice of long, short, medium or full) + * Type of formatting used for visual display, appropriate to locale (choice + * of long, short, medium or full) * * @s.tagattribute required="false" type="String" */ @@ -106,15 +164,6 @@ } /** - * Formatting scheme used when submitting the form element. - * Possible values are rfc,iso,posix and unix - * @s.tagattribute required="false" type="String" default="rfc" - */ - public void setSaveFormat(String saveFormat) { - this.saveFormat = saveFormat; - } - - /** * Duration of toggle in seconds * * @s.tagattribute required="false" type="Integer" default="100" @@ -124,8 +173,8 @@ } /** - * Defines the type of the picker on the dropdown. - * Possible values are "date" for a DatePicker, and "time" for a timePicker + * Defines the type of the picker on the dropdown. Possible values are + * "date" for a DatePicker, and "time" for a timePicker * * @s.tagattribute required="false" type="String" default="date" */ @@ -134,8 +183,8 @@ } /** - * Toggle type of the dropdown. - * Possible values are plain,wipe,explode,fade + * Toggle type of the dropdown. Possible values are plain,wipe,explode,fade + * * @s.tagattribute required="false" type="String" default="plain" */ public void setToggleType(String toggleType) { Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/DropdownDateTimePickerTag.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/DropdownDateTimePickerTag.java?view=diff&rev=491377&r1=491376&r2=491377 ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/DropdownDateTimePickerTag.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/DropdownDateTimePickerTag.java Sat Dec 30 19:32:03 2006 @@ -35,7 +35,6 @@ protected String iconPath; protected String formatLength; protected String displayFormat; - protected String saveFormat; protected String toggleType; protected String toggleDuration; protected String type; @@ -51,7 +50,6 @@ picker.setIconPath(iconPath); picker.setFormatLength(formatLength); picker.setDisplayFormat(displayFormat); - picker.setSaveFormat(saveFormat); picker.setToggleType(toggleType); picker.setToggleDuration(toggleDuration); picker.setType(type); @@ -67,10 +65,6 @@ public void setIconPath(String iconPath) { this.iconPath = iconPath; - } - - public void setSaveFormat(String saveFormat) { - this.saveFormat = saveFormat; } public void setToggleDuration(String toggleDuration) { Modified: struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld?view=diff&rev=491377&r1=491376&r2=491377 ============================================================================== --- struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld (original) +++ struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld Sat Dec 30 19:32:03 2006 @@ -11982,15 +11982,6 @@ </attribute> <attribute> - <name>saveFormat</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - - <description><![CDATA[Formatting scheme used when submitting the form element.Possible values are rfc,iso,posix and unix.]]></description> - - </attribute> - - <attribute> <name>adjustWeeks</name> <required>false</required> <rtexprvalue>true</rtexprvalue> Modified: struts/struts2/trunk/core/src/main/resources/template/simple/dropdowndatetimepicker.ftl URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/dropdowndatetimepicker.ftl?view=diff&rev=491377&r1=491376&r2=491377 ============================================================================== --- struts/struts2/trunk/core/src/main/resources/template/simple/dropdowndatetimepicker.ftl (original) +++ struts/struts2/trunk/core/src/main/resources/template/simple/dropdowndatetimepicker.ftl Sat Dec 30 19:32:03 2006 @@ -1,10 +1,3 @@ -<script type="text/javascript"> - <#if parameters.type?if_exists == "date"> - dojo.require("dojo.widget.DropdownDatePicker"); - <#else> - dojo.require("dojo.widget.DropdownTimePicker"); - </#if> -</script> <div <#if parameters.type?if_exists == "date"> dojoType="dropdowndatepicker"<#rt/> @@ -14,14 +7,15 @@ <#if parameters.id?if_exists != ""> id="${parameters.id?html}"<#rt/> </#if> - <#if parameters.value?if_exists != ""> - value="${parameters.value?html}"<#rt/> + <#if parameters.nameValue?if_exists != ""> + value="${parameters.nameValue?html}"<#rt/> </#if> <#if parameters.language?if_exists != ""> lang="${parameters.language?html}"<#rt/> </#if> <#if parameters.name?if_exists != ""> - inputName="${parameters.name?html}"<#rt/> + name="${parameters.name?html}"<#rt/> + inputName="dojo.${parameters.name?html}"<#rt/> </#if> <#if parameters.displayWeeks?if_exists != ""> displayWeeks="${parameters.displayWeeks?html}"<#rt/> @@ -62,14 +56,12 @@ <#if parameters.displayFormat?if_exists != ""> displayFormat="${parameters.displayFormat?html}"<#rt/> </#if> - <#if parameters.saveFormat?if_exists != ""> - saveFormat="${parameters.saveFormat?html}"<#rt/> - </#if> <#if parameters.toggleType?if_exists != ""> containerToggle="${parameters.toggleType?html}"<#rt/> </#if> <#if parameters.toggleDuration?exists> containerToggleDuration="${parameters.toggleDuration?string?html}"<#rt/> </#if> + saveFormat="rfc"<#rt/> <#include "/${parameters.templateDir}/simple/scripting-events.ftl" /> -></div> \ No newline at end of file +></div> Modified: struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DropDownTimePicker-1.txt URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DropDownTimePicker-1.txt?view=diff&rev=491377&r1=491376&r2=491377 ============================================================================== --- struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DropDownTimePicker-1.txt (original) +++ struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DropDownTimePicker-1.txt Sat Dec 30 19:32:03 2006 @@ -1,6 +1,3 @@ -<script type="text/javascript"> - dojo.require("dojo.widget.DropdownTimePicker"); -</script> <div dojoType="dropdowntimepicker" id="id" value="n" @@ -18,4 +15,4 @@ saveFormat="m" containerToggle="o" containerToggleDuration="100"> -</div> \ No newline at end of file +</div> Modified: struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DropdownDatePicker-1.txt URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DropdownDatePicker-1.txt?view=diff&rev=491377&r1=491376&r2=491377 ============================================================================== --- struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DropdownDatePicker-1.txt (original) +++ struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DropdownDatePicker-1.txt Sat Dec 30 19:32:03 2006 @@ -1,6 +1,3 @@ -<script type="text/javascript"> - dojo.require("dojo.widget.DropdownDatePicker"); -</script> <div dojoType="dropdowndatepicker" id="id" value="n" @@ -18,4 +15,4 @@ saveFormat="m" containerToggle="o" containerToggleDuration="100"> -</div> \ No newline at end of file +</div>