[
https://issues.apache.org/jira/browse/WW-5810?focusedWorklogId=1049913&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-1049913
]
ASF GitHub Bot logged work on WW-5810:
--------------------------------------
Author: ASF GitHub Bot
Created on: 24/Oct/26 14:18
Start Date: 24/Oct/26 14:18
Worklog Time Spent: 10m
Work Description: lukaszlenart commented on code in PR #2056:
URL: https://github.com/apache/struts/pull/2056#discussion_r4367392446
##########
plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/DateTextFieldHandler.java:
##########
@@ -102,6 +102,20 @@ public void generate() throws IOException {
}
}
+
+ protected String formatValue(Object value, DateWord dateWord) {
+ if (value instanceof Date date) {
+ return new SimpleDateFormat(dateWord.getDateType()).format(date);
+ }
+ if (value instanceof TemporalAccessor temporal) {
+ try {
+ return
DateTimeFormatter.ofPattern(dateWord.getDateType()).format(temporal);
Review Comment:
Confirmed: under `th-TH` the `LocalDate` rendered year `2026` and the
interceptor bound it back as 1483-11-02. Fixed in a08b3f3ca: `java.time` values
are converted to a `Date` and formatted with `SimpleDateFormat`, the same
calendar the interceptor parses with, so the existing `Date` path is unchanged
and a field the type lacks still renders empty.
`testLocalDateRoundTripsUnderABuddhistCalendarLocale` renders under `th-TH`,
submits through `DateTextFieldInterceptor` and `DateConverter`, and asserts the
original date.
Issue Time Tracking
-------------------
Worklog Id: (was: 1049913)
Time Spent: 1h (was: 50m)
> Support java.time types in the datetextfield tag
> ------------------------------------------------
>
> Key: WW-5810
> URL: https://issues.apache.org/jira/browse/WW-5810
> Project: Struts 2
> Issue Type: Improvement
> Components: Core Tags
> Reporter: Lukasz Lenart
> Assignee: Lukasz Lenart
> Priority: Major
> Fix For: 7.5.0
>
> Time Spent: 1h
> Remaining Estimate: 0h
>
> h2. Problem
> {{datetextfield}} only works with {{java.util.Date}} properties:
> * The JavaTemplates {{DateTextFieldHandler}} casts the value straight to
> {{java.util.Date}}, so a {{LocalDate}} property fails with a
> {{ClassCastException}}
> * {{DateTextFieldInterceptor}} reassembles the split fields with
> {{SimpleDateFormat}} and always sets a {{java.util.Date}}
> * The html5 template added in WW-5778 renders the ISO {{yyyy-MM-dd}} value
> from {{java.util.Date}} only
> {{input type="date"}} maps naturally to {{java.time.LocalDate}}, which is the
> type most applications now use for a date without a time.
> h2. Proposal
> Support {{java.time}} property types (at least {{LocalDate}}) in
> {{datetextfield}}:
> * html5 theme: render the ISO {{yyyy-MM-dd}} value for {{LocalDate}} (and
> define the behaviour for {{LocalDateTime}} / {{ZonedDateTime}} etc. —
> truncate to the date, or reject)
> * JavaTemplates theme: format the split fields from {{java.time}} values and
> have {{DateTextFieldInterceptor}} set the property's declared type
> * Tests for each supported type, and the tag reference updated to list them
> Related: WW-5778 (datetextfield in the html5 theme)
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)