You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2010/03/31 11:53:01 UTC
svn commit: r929448 - in /struts/struts2/trunk/core/src:
main/java/org/apache/struts2/components/Date.java
test/java/org/apache/struts2/views/jsp/ui/DateTagTest.java
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();