From 61ded9a3e7e282bcb9096ca5b3c859c8b45546fa Mon Sep 17 00:00:00 2001 From: Tobias Stadler Date: Tue, 21 Jun 2022 10:09:31 +0200 Subject: [PATCH 1/2] WW-5197 Adds support for java.sql.Date --- core/src/main/java/org/apache/struts2/components/Date.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/apache/struts2/components/Date.java b/core/src/main/java/org/apache/struts2/components/Date.java index ad174fd11..2e78993c6 100644 --- a/core/src/main/java/org/apache/struts2/components/Date.java +++ b/core/src/main/java/org/apache/struts2/components/Date.java @@ -293,7 +293,9 @@ public class Date extends ContextBean { final ZoneId tz = getTimeZone(); // find the name on the valueStack Object dateObject = findValue(name); - if (dateObject instanceof java.util.Date) { + if (dateObject instanceof java.sql.Date) { + date = ((java.sql.Date) dateObject).toLocalDate().atStartOfDay(tz); + } else if (dateObject instanceof java.util.Date) { date = ((java.util.Date) dateObject).toInstant().atZone(tz); } else if (dateObject instanceof Calendar) { date = ((Calendar) dateObject).toInstant().atZone(tz); From f3f2d52a1c5b1389542186f37bcbde1442869914 Mon Sep 17 00:00:00 2001 From: Tobias Stadler Date: Tue, 21 Jun 2022 10:23:17 +0200 Subject: [PATCH 2/2] Added test case for java.sql.Date --- .../apache/struts2/components/DateTest.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/core/src/test/java/org/apache/struts2/components/DateTest.java b/core/src/test/java/org/apache/struts2/components/DateTest.java index 2b9ca8bd7..ffe01a52a 100644 --- a/core/src/test/java/org/apache/struts2/components/DateTest.java +++ b/core/src/test/java/org/apache/struts2/components/DateTest.java @@ -81,6 +81,28 @@ public class DateTest extends StrutsInternalTestCase { assertEquals(expected, writer.toString()); } + public void testJavaSqlDate() { + // given + Date date = new Date(stack); + date.setDateFormatter(new SimpleDateFormatAdapter()); + + java.sql.Date now = new java.sql.Date(System.currentTimeMillis()); + + String expected = SimpleDateFormat.getDateInstance(DateFormat.MEDIUM, ActionContext.getContext().getLocale()).format(now); + context.put("myDate", now); + + Writer writer = new StringWriter(); + + // when + date.setName("myDate"); + date.setNice(false); + date.start(writer); + date.end(writer, ""); + + // then + assertEquals(expected, writer.toString()); + } + @Override public void setUp() throws Exception { super.setUp();