I forgot to mention that I am using Spring as well, so I'm not sure if
this is getting in the way.
Jesse Kuhnert said the following on 26/03/2007 12:06 AM:
No idea, but I'm currently using joda dates with the
dropdowndatepicker/timepickers with a similar contribution and things
are working fine. (of course I might have technical advantages, and I
did have to refactor those components some to allow the joda date
objects to be bound instead of just java,util.Date )
On 3/25/07, Doychi <[EMAIL PROTECTED]> wrote:
Hi All,
I'm having some problems with JPA and translators.
I have been able to set up a number of pages for CRUD, but in one class
I am using Joda's Time and Date library (specifically the DateTime
class). Now it came as no surprise that this class can't be used
directly from the HTML form and I would have to write a bit of code to
sort this out. So when I came to the page to create the Event Session
(session) I thought no problems I'll use a rtanslator, but I have been
unable to get the translator to work.
The problem appears to be that the translator doesn't get called, which
I can prove by using the debugger and placing a break point in both the
formatObject and parseText. As you can see below I call
ognl:session.startDate, which populates the form field with
2007-03-25T00:00:00.000+11:00, which is what I would expect for
DateTime.toString().
Can any one tell me why the translator may not be executed for
presentation (and possibly on submission)?
Thanks,
Below I have included some information from the relevant files:
------ HTML -------
<tr>
<td><label jwcid="@FieldLabel" field="component:startDate">Start
Date:</label></td>
<td><input jwcid="[EMAIL PROTECTED]" displayName="Start Date:"
value="ognl:session.startDate"
validators="validators:required"
translators="translator:dateTime" /></td><!--
,pattern=dd/MM/yyyy -->
</tr>
------ HTML -------
------- hivemodule.xml ---------
<?xml version="1.0"?>
<module id="au.org.pheno.f1" version="0.0.1">
<!-- Validators and Translators -->
<contribution
configuration-id="tapestry.form.translator.Translators">
<bean name="dateTime"
class="au.org.pheno.tapestry.translator.JodaDateTime" />
</contribution>
</module>
------- hivemodule.xml ---------
------- JodaDateTime.java (translator) --------
public class JodaDateTime extends AbstractTranslator {
private static final DateTimeFormatter DATE_TIME_PATTERN =
DateTimeFormat
.forPattern("dd/MM/YYYY");
/**
* @see
org.apache.tapestry.form.translator.AbstractTranslator#formatObject(org.apache.tapestry.form.IFormComponent,
* Locale, java.lang.Object)
*/
protected String formatObject(IFormComponent field, Locale locale,
Object object) {
ReadableDateTime dateTime = null;
String date = null;
if (object == null) {
dateTime = new DateTime();
} else {
dateTime = (DateTime) object;
}
date = DATE_TIME_PATTERN.print(dateTime);
return date;
}
/**
* @see
org.apache.tapestry.form.translator.AbstractTranslator#parseText(org.apache.tapestry.form.IFormComponent,
* ValidationMessages, java.lang.String)
*/
protected Object parseText(IFormComponent field,
ValidationMessages messages, String text) throws
ValidatorException {
DateTime dateTime = null;
try {
dateTime = DATE_TIME_PATTERN.parseDateTime(text);
} catch (IllegalArgumentException e) {
throw new ValidatorException(e.getMessage());
}
return dateTime;
}
protected ValidationConstraint getConstraint() {
System.err.println("Validating JodaDateTime");
return ValidationConstraint.DATE_FORMAT;
}
public JodaDateTime() {
super();
// _pattern = defaultPattern();
}
// Needed until HIVEMIND-134 fix is available
public JodaDateTime(String initializer) {
super();
PropertyUtils.configureProperties(this, initializer);
}
}
------- JodaDateTime.java (translator) --------
--
Doychi
[EMAIL PROTECTED]
---
avast! Antivirus: Outbound message clean.
Virus Database (VPS): 000727-1, 03/23/2007
Tested on: 3/26/2007 7:46:03 AM
avast! - copyright (c) 1988-2007 ALWIL Software.
http://www.avast.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]