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>