You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by hu...@apache.org on 2006/12/31 04:32:04 UTC

svn commit: r491377 - in /struts/struts2/trunk: apps/showcase/src/main/webapp/ajax/dropdowndatepicker/ apps/showcase/src/main/webapp/ajax/dropdowntimepicker/ core/src/main/java/org/apache/struts2/components/ core/src/main/java/org/apache/struts2/views/...

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>