Author: lukaszlenart
Date: Wed Mar 31 09:53:00 2010
New Revision: 929448
URL: http://svn.apache.org/viewvc?rev=929448&view=rev
Log:
Resolved WW-3424 - added expression evaluation for timezone attribute
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Date.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DateTagTest.java
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Date.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Date.java?rev=929448&r1=929447&r2=929448&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Date.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Date.java
Wed Mar 31 09:53:00 2010
@@ -302,11 +302,7 @@ public class Date extends ContextBean {
if (nice) {
msg = formatTime(tp, date);
} else {
- TimeZone tz = TimeZone.getDefault();
- if (timezone != null) {
- tz = TimeZone.getTimeZone(timezone);
- }
-
+ TimeZone tz = getTimeZone();
if (format == null) {
String globalFormat = null;
@@ -353,6 +349,19 @@ public class Date extends ContextBean {
return super.end(writer, "");
}
+ private TimeZone getTimeZone() {
+ TimeZone tz = TimeZone.getDefault();
+ if (timezone != null) {
+ timezone = stripExpressionIfAltSyntax(timezone);
+ String actualTimezone = (String) getStack().findValue(timezone,
String.class);
+ if (actualTimezone != null) {
+ timezone = actualTimezone;
+ }
+ tz = TimeZone.getTimeZone(timezone);
+ }
+ return tz;
+ }
+
@StrutsTagAttribute(description="Date or DateTime format pattern",
rtexprvalue=false)
public void setFormat(String format) {
this.format = format;
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DateTagTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DateTagTest.java?rev=929448&r1=929447&r2=929448&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DateTagTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/DateTagTest.java
Wed Mar 31 09:53:00 2010
@@ -70,6 +70,24 @@ public class DateTagTest extends Abstrac
assertEquals(formatted, writer.toString());
}
+ public void testCustomFormatWithTimezoneAsExpression() throws Exception {
+ String format = "yyyy/MM/dd hh:mm:ss";
+ Date now =
Calendar.getInstance(TimeZone.getTimeZone("UTC+2")).getTime();
+ SimpleDateFormat sdf = new SimpleDateFormat(format);
+ sdf.setTimeZone(TimeZone.getTimeZone("UTC+2"));
+ String formatted = sdf.format(now);
+ context.put("myDate", now);
+ context.put("myTimezone", "UTC+2");
+
+ tag.setName("myDate");
+ tag.setNice(false);
+ tag.setFormat(format);
+ tag.setTimezone("myTimezone");
+ tag.doStartTag();
+ tag.doEndTag();
+ assertEquals(formatted, writer.toString());
+ }
+
public void testCustomFormatCalendar() throws Exception {
String format = "yyyy/MM/dd hh:mm:ss";
Calendar calendar = Calendar.getInstance();