diff --git a/core/src/main/java/org/apache/struts2/components/DateTimePicker.java b/core/src/main/java/org/apache/struts2/components/DateTimePicker.java index f4c7bd657..8513a2361 100644 --- a/core/src/main/java/org/apache/struts2/components/DateTimePicker.java +++ b/core/src/main/java/org/apache/struts2/components/DateTimePicker.java @@ -127,7 +127,7 @@ import com.opensymphony.xwork2.util.ValueStack; public class DateTimePicker extends UIBean { final public static String TEMPLATE = "datetimepicker"; - final private static SimpleDateFormat RFC3399_FORMAT = new SimpleDateFormat( + final private static SimpleDateFormat RFC3339_FORMAT = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss"); final protected static Log LOG = LogFactory.getLog(DateTimePicker.class); @@ -146,6 +146,7 @@ public class DateTimePicker extends UIBean { protected String staticDisplay; protected String dayWidth; protected String language; + protected String templateCssPath; public DateTimePicker(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { super(stack, request, response); @@ -191,7 +192,9 @@ public class DateTimePicker extends UIBean { addParameter("type", findString(type)); else addParameter("type", "date"); - + if(templateCssPath != null) + addParameter("templateCssPath", findString(templateCssPath)); + // format the value to RFC 3399 if(parameters.containsKey("value")) { parameters.put("nameValue", format(parameters.get("value"))); @@ -279,17 +282,22 @@ public class DateTimePicker extends UIBean { this.toggleType = toggleType; } + @StrutsTagAttribute(description="Template css path") + public void setTemplateCssPath(String templateCssPath) { + this.templateCssPath = templateCssPath; + } + private String format(Object obj) { if(obj == null) return null; if(obj instanceof Date) { - return RFC3399_FORMAT.format((Date) obj); + return RFC3339_FORMAT.format((Date) obj); } else { // try to parse a date String dateStr = obj.toString(); if(dateStr.equalsIgnoreCase("today")) - return RFC3399_FORMAT.format(new Date()); + return RFC3339_FORMAT.format(new Date()); try { Date date = null; @@ -297,7 +305,7 @@ public class DateTimePicker extends UIBean { SimpleDateFormat format = new SimpleDateFormat( this.displayFormat); date = format.parse(dateStr); - return RFC3399_FORMAT.format(date); + return RFC3339_FORMAT.format(date); } else { // last resource to assume already in correct/default format return dateStr; diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/DateTimePickerTag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/DateTimePickerTag.java index 4efc2870a..792123cca 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/ui/DateTimePickerTag.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/DateTimePickerTag.java @@ -50,6 +50,7 @@ public class DateTimePickerTag extends AbstractUITag { protected String toggleType; protected String toggleDuration; protected String type; + protected String templateCssPath; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new DateTimePicker(stack, req, res); @@ -73,6 +74,7 @@ public class DateTimePickerTag extends AbstractUITag { dateTimePicker.setToggleType(toggleType); dateTimePicker.setToggleDuration(toggleDuration); dateTimePicker.setType(type); + dateTimePicker.setTemplateCssPath(templateCssPath); } public void setAdjustWeeks(String adjustWeeks) { @@ -130,4 +132,8 @@ public class DateTimePickerTag extends AbstractUITag { public void setType(String type) { this.type = type; } + + public void setTemplateCssPath(String templateCssPath) { + this.templateCssPath = templateCssPath; + } } diff --git a/core/src/main/resources/template/css_xhtml/dropdowndatetimepicker.ftl b/core/src/main/resources/template/css_xhtml/dropdowndatetimepicker.ftl deleted file mode 100644 index c117d9842..000000000 --- a/core/src/main/resources/template/css_xhtml/dropdowndatetimepicker.ftl +++ /dev/null @@ -1 +0,0 @@ -<#include "/${parameters.templateDir}/simple/dropdowndatetimepicker.ftl" /> \ No newline at end of file diff --git a/core/src/main/resources/template/simple/datetimepicker.ftl b/core/src/main/resources/template/simple/datetimepicker.ftl index 92a31b798..575efcbb8 100644 --- a/core/src/main/resources/template/simple/datetimepicker.ftl +++ b/core/src/main/resources/template/simple/datetimepicker.ftl @@ -51,7 +51,7 @@ style="${parameters.cssStyle?html}"<#rt/> <#if parameters.iconPath?if_exists != ""> - iconURL="${parameters.iconPath}"<#rt/> + iconURL="<@s.url value='${parameters.iconPath}' encode="false" includeParams='none'/>"<#rt/> <#if parameters.formatLength?if_exists != ""> formatLength="${parameters.formatLength?html}"<#rt/> @@ -65,6 +65,9 @@ <#if parameters.toggleDuration?exists> containerToggleDuration="${parameters.toggleDuration?string?html}"<#rt/> + <#if parameters.templateCssPath?exists> + templateCssPath="<@s.url value='${parameters.templateCssPath}' encode="false" includeParams='none'/>" + saveFormat="rfc"<#rt/> <#include "/${parameters.templateDir}/simple/scripting-events.ftl" /> > diff --git a/core/src/site/resources/tags/datetimepicker.html b/core/src/site/resources/tags/datetimepicker.html index 0a1121e19..cc179fbbd 100644 --- a/core/src/site/resources/tags/datetimepicker.html +++ b/core/src/site/resources/tags/datetimepicker.html @@ -323,6 +323,14 @@ Please do not edit it directly. String The template (other than default) to use for rendering the element + + templateCssPath + false + + true + String + Template css path + templateDir false diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/DateTimePickerTagTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/DateTimePickerTagTest.java index 6bed51d73..61322f9e7 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/DateTimePickerTagTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/DateTimePickerTagTest.java @@ -59,6 +59,7 @@ public class DateTimePickerTagTest extends AbstractUITagTest { tag.setWeekStartsOn("g"); tag.setName("h"); tag.setLanguage("i"); + tag.setTemplateCssPath("j"); tag.doStartTag(); tag.doEndTag(); diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/DateTimePickerTagTest-1.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/DateTimePickerTagTest-1.txt index 6e5dcb8a9..b26416f50 100644 --- a/core/src/test/resources/org/apache/struts2/views/jsp/ui/DateTimePickerTagTest-1.txt +++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/DateTimePickerTagTest-1.txt @@ -16,6 +16,7 @@ endDate="d" weekStartsOn="g" staticDisplay="false" + templateCssPath="j" saveFormat="rfc">