My date field is one text box with a Date Picker Widget. The converter does the valid date validation for me by attempting to parse the date in the Util class. If it returns null then I know I got a parse exception.
I am including my convertFromString code below. I need it to handle both single dates and an array of dates. My form always has a date range, plus N number of date ranges to select. I wrote it to work for both. Any criticisms or questions about the code are welcomed. public Object convertFromString(Map context, String[] values, Class toClass) throws TypeConversionException { ArrayList<Date> dates = new ArrayList<Date>(); Date returnDates[] = null; if (toClass == Date.class || toClass == Date[].class) { StrutsRequestWrapper srw = (StrutsRequestWrapper) context.get("com.opensymphony.xwork2.dispatcher.HttpServletRequest"); User u = (User) srw.getSession().getAttribute(Constants.USER_SESSION_KEY); Util util = new Util(); for (int i = 0; i < values.length; i++) { if (values[i].trim().length() > 0) { //all date ranges are submitted even if they are empty Date tmpDate = util.parseDate(values[i], u.getDateFormat()); dates.add(tmpDate); if (tmpDate == null) { //parsing failed throw new TypeConversionException("Could not parse date [" + values[i] + "] using format [" + u.getDateFormat() + "]"); } } } returnDates = dates.toArray(new Date[0]); } if (returnDates.length > 1) { return returnDates; } return returnDates[0]; } On Fri, May 1, 2009 at 12:32 PM, Andy Sykes <a.sy...@ucl.ac.uk> wrote: > I wrote my own method based on having three select dropdown boxes for the > date - day, month and year. > > Rather than do it as a type converter, I did it as an interceptor, with > three getters/setters in the action (getStartTime_Day, getStartTime_Month, > getStartTime_Year). The interceptor uses reflection when it encounters a > Date setter (with a suitable annotation) in the action to look up these > fields and parse them into a Date for setting. Lets me do validation at the > same time. > > Andy. > > On 1 May 2009, at 12:44, Richard Sayre wrote: > >> I think I am going to write my own. After experimenting with the date >> time picker it only seems to convert the date if its in this format >> mm/dd/yy. In my application the user can choose their own date format. >> When I have a format like 1 May 2009, the datetime picker value does >> not get converted. It is expecting to set a String instead of a Date. >> I am still trying to get my own converter to work right. If I get >> something written I will share it with the group. >> >> >> >> On Thu, Apr 30, 2009 at 10:19 PM, Zoran Avtarovski >> <zo...@sparecreative.com> wrote: >>> >>> That¹s exactly right but sometimes you want to use a format that isn¹t >>> the >>> short format for the locale and I suspect that¹s what is happening with >>> Richard. >>> >>> He has two choices, either configure his date time picker to produce the >>> date in the required format, or as suggested write your own converter. My >>> only concern with Matt¹s version is that the conversion exception is >>> buried >>> which will have implications for validation. >>> >>> Z. >>> >>> >>>> >>>> Hi Richard, >>>> >>>> Have a look at http://struts.apache.org/2.1.6/docs/type-conversion.html >>>> It says that "dates - uses the SHORT format for the Locale associated >>>> with the >>>> current request" >>>> >>>> May be this will help. >>>> >>>> Thank you. >>>> Regards, >>>> Kishan.G >>>> >>>> Senior Software Engineer. >>>> www.spansystems.com >>>> >>>> >>>> >>>> >>>> -----Original Message----- >>>> From: Richard Sayre [mailto:richardsa...@gmail.com] >>>> Sent: Thursday, April 30, 2009 4:14 PM >>>> To: Struts Users Mailing List >>>> Subject: Re: Submitting a Date to an Action >>>> >>>> Thank you. I will give it a try. >>>> >>>> On Thu, Apr 30, 2009 at 1:22 AM, Matt Jiang <matt.ji...@gmail.com> >>>> wrote: >>>>>> >>>>>> Hi >>>>>> >>>>>> It is nothing about date picker tag. You can have a Converter to >>>>>> convert >>>>>> String to Date and vice versa. >>>>>> Below is my implementation for your reference: >>>>>> (For DateUtil, please replace with yours) >>>>>> >>>>>> public class DateConverter extends StrutsTypeConverter { >>>>>> >>>>>> private static final String PATTERN = DateUtil.PATTERN_YYYY_MM_DD; >>>>>> >>>>>> �...@override >>>>>> /** >>>>>> * Converts one or more String values to the specified class. >>>>>> * >>>>>> * @param context the action context >>>>>> * @param values the String values to be converted, such as those >>>>>> submitted from an HTML form >>>>>> * @param toClass the class to convert to >>>>>> * @return the converted object >>>>>> */ >>>>>> public Object convertFromString(Map context, String[] values, Class >>>>>> toClass) { >>>>>> >>>>>> Date returnObject = null; >>>>>> String value = values[0]; >>>>>> if (value != null && !value.trim().equals("")) { >>>>>> try { >>>>>> returnObject = DateUtil.parseDate(value, PATTERN); >>>>>> } catch (ParseException e) { >>>>>> // Just to ignore the parse exception >>>>>> } >>>>>> } >>>>>> return returnObject; >>>>>> } >>>>>> >>>>>> �...@override >>>>>> /** >>>>>> * Converts the specified object to a String. >>>>>> * >>>>>> * @param context the action context >>>>>> * @param o the object to be converted >>>>>> * @return the converted String >>>>>> */ >>>>>> public String convertToString(Map context, Object o) { >>>>>> >>>>>> Date date = (Date) o; >>>>>> String formatedDate = DateUtil.dateFormater(date, PATTERN); >>>>>> return formatedDate; >>>>>> } >>>>>> } >>>>>> >>>>>> >>>>>> >>>>>> On Thu, Apr 30, 2009 at 1:19 AM, Richard Sayre >>>>> >>>>> <richardsa...@gmail.com>wrote: >>>>>> >>>>>>>> I have an Action with a date attribute >>>>>>>> >>>>>>>> private Date myDate; >>>>>>>> >>>>>>>> public void setMyDate(Date myDate) { >>>>>>>> this.myDate = myDate; >>>>>>>> } >>>>>>>> >>>>>>>> I have a form that has a date picker (not the struts 2 date picker) >>>>>>>> that populates a text field. When I submitt the form to my action >>>>>>>> the >>>>>>>> property does not get set because Struts 2 is looking for >>>>>>>> setMyDate(String myDate). >>>>>>>> >>>>>>>> How do I tell Struts that the field is a Date? >>>>>>>> >>>>>>>> >>>>>>>> Thank you, >>>>>>>> >>>>>>>> Rich >>>>>>>> >>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>>>>>>> For additional commands, e-mail: user-h...@struts.apache.org >>>>>>>> >>>>>>>> >>>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>>> For additional commands, e-mail: user-h...@struts.apache.org >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>>> For additional commands, e-mail: user-h...@struts.apache.org >>>> >>> >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >> For additional commands, e-mail: user-h...@struts.apache.org >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org