Hi,

I am trying to use this component with org.joda.time.DateTime and I get the
following error:
Parameter 'translate' of component job/Post:bidsdeadline is bound to null.
This parameter is not allowed to be null.

If I apply this solution
http://programmerslounge.blogspot.co.uk/2013/07/error-parameter-translate-of-component.html
Then the above error is gone, but tapestry-datepicker (JQueryDatePicker
class) expects a TextField and not a DateField. So it fails there

I have added a type coercer for DateTime Date and configured an
EditBlockContribution for DateTime as per follows:

*public* *static* *void* contributeTypeCoercer(*final* Configuration<
*CoercionTuple*> configuration) {

*final* Coercion<DateTime, Date> coercion = *new* Coercion<DateTime,
Date>() {

@Override

*public* Date coerce(*final* DateTime input) {

*return* input != *null* ? input.toDate() : *null*;

}

};


 configuration.add(*new* CoercionTuple<DateTime, Date>(DateTime.*class*,
Date.*class*, coercion));


 *final* Coercion<Date, DateTime> coercion2 = *new* Coercion<Date,
DateTime>() {


 @Override

*public* DateTime coerce(*final* Date input) {

*return* *new* DateTime(input);

}

};


 configuration.add(*new* CoercionTuple<Date, DateTime>(Date.*class*,
DateTime.*class*, coercion2));

}


 *public* *static* *void* contributeDefaultDataTypeAnalyzer(
@SuppressWarnings("rawtypes") *final* MappedConfiguration<Class, String>
configuration) {

configuration.add(DateTime.*class*, "dateTime");

}


 *public* *static* *void*
contributeBeanBlockSource(*final*Configuration<BeanBlockContribution>
configuration) {

configuration.add(*new* EditBlockContribution("dateTime",
"datefield/AppPropertyEditBlocks", "dateTime"));

}


Can somebody point what I am missing please?
Has anybody used tapestry-datepicker successfully with Joda-Time?

Thanks,
Balazs


On 25 November 2013 14:27, Barry Books <trs...@gmail.com> wrote:

> Added this also, but now I wonder what would happen if you provide a
> LocalDate translator but no TypeCoercers. I had assumed the type of value
> was Date but it's really unknown. Not sure this can be solved in a
> generalized way. The code is only needed to support native date pickers so
> perhaps it should fail more gracefully and warn you to provide a
> TypeCoercer.
>
>
> On Sun, Nov 24, 2013 at 11:48 PM, Geoff Callender <
> geoff.callender.jumpst...@gmail.com> wrote:
>
> > Cool.
> >
> > I tried to use date-picker with a LocalDate (from Joda Time) but got a
> > class-cast exception. It was unaware that I had contributed TypeCoercers
> > between LocalDate and Date (
> >
> http://jumpstart.doublenegative.com.au/jumpstart/examples/lang/typecoercers
> ).
> >
> > It's an easy fix that will allow the date picker to work with any class
> > that is coerced to, and from, Date.
> >
> > Add this:
> >
> >         @Inject
> >         private TypeCoercer coercer;
> >
> > and replace this:
> >
> >                 Date date = (Date) value;
> >
> > with this:
> >
> >                 Date date = coercer.coerce(value, Date.class);
> >
> > Cheers,
> >
> > Geoff
> >
> >
> > On 24/11/2013, at 1:32 AM, Barry Books wrote:
> >
> > > Thanks,
> > >
> > > I added this to the code
> > >
> > >
> > > On Wed, Nov 20, 2013 at 2:13 AM, Geoff Callender <
> > > geoff.callender.jumpst...@gmail.com> wrote:
> > >
> > >> Very nice. But doesn't handle disabled. It's an easy fix:
> > >>
> > >> Instead of this:
> > >>
> > >> @InjectContainer
> > >>
> > >> private ClientElement clientElement;
> > >>
> > >> do this:
> > >>
> > >> @InjectContainer
> > >>
> > >> private TextField clientElement;
> > >>
> > >> and replace this:
> > >>
> > >> element.elementBefore("input", "value", formatedDate, "type",
> "hidden",
> > >> "class", "form-control", "id", clientID);
> > >>
> > >> with this:
> > >>
> > >> Element dateField = element.elementBefore("input", "value",
> > formatedDate,
> > >> "type", "hidden", "class",
> > >>
> > >> "form-control", "id", clientID);
> > >>
> > >>
> > >> if (clientElement.isDisabled()) {
> > >>
> > >> dateField.attribute("disabled", "disabled");
> > >>
> > >> }
> > >>
> > >> Cheers,
> > >>
> > >> Geoff
> > >>
> > >>
> > >> On 9 October 2013 22:02, Barry Books <trs...@gmail.com> wrote:
> > >>
> > >>> I pushed a new snapshot. What documentation there is here
> > >>>
> > >>> https://github.com/trsvax/tapestry-datepicker
> > >>>
> > >>> This version allows overriding the location of the javascript and css
> > for
> > >>> the jquery date picker.
> > >>>
> > >>> The basic features are
> > >>>
> > >>> 1. Translators for textfield to validate date/calendar/timestamp
> entry
> > >>> 2. A mixin that adds jQuery Calendar support to the textfield
> > >>> 3. Native type="date" support (at least on the iPhone)
> > >>> 4. BeanEdit support
> > >>> 5. Ability to override css/javascript included by the jQuery mixin
> > >>>
> > >>> I think this makes it feature complete but at this point things are
> > still
> > >>> subject to change. I'm going to create some better docs and tests
> then
> > >> I'll
> > >>> push a version to maven central
> > >>>
> > >>> Thanks for the input so far
> > >>>
> > >>>
> > >>>
> > >>> On Tue, Oct 8, 2013 at 7:54 PM, Barry Books <trs...@gmail.com>
> wrote:
> > >>>
> > >>>> it's in the current one. I'll also be pushing up some fixes in the
> > >>> morning.
> > >>>>
> > >>>>
> > >>>> On Tue, Oct 8, 2013 at 5:53 PM, Lenny Primak <
> lpri...@hope.nyc.ny.us
> > >>>> wrote:
> > >>>>
> > >>>>> Let us know when the beaneditor support is there.  I'll try it then
> > >> and
> > >>>>> give feedback
> > >>>>> Thank you!
> > >>>>>
> > >>>>> On Oct 8, 2013, at 6:39 AM, Barry Books wrote:
> > >>>>>
> > >>>>>> https://oss.sonatype.org/content/repositories/snapshots/
> > >>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>> <groupId>com.trsvax</groupId>
> > >>>>>>
> > >>>>>> <artifactId>tapestry-datepicker</artifactId>
> > >>>>>>
> > >>>>>> <version>0.0.1-SNAPSHOT</version>
> > >>>>>>
> > >>>>>>
> > >>>>>> It's still a work in progress but I think it's starting to come
> > >>>>> together.
> > >>>>>> Being able to pass attributes from the translator into the html
> > >> stream
> > >>>>> is
> > >>>>>> proving useful. For example you can do things such as
> > >>>>>>
> > >>>>>> placeholder="mm-dd-yyyy"
> > >>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>> On Tue, Oct 8, 2013 at 4:33 AM, Geoff Callender <
> > >>>>>> geoff.callender.jumpst...@gmail.com> wrote:
> > >>>>>>
> > >>>>>>> What's the artifact info?
> > >>>>>>>
> > >>>>>>> On 07/10/2013, at 10:26 PM, Barry Books wrote:
> > >>>>>>>
> > >>>>>>>> Snapshot 0.0.1-SNAPSHOT is available at
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>> https://oss.sonatype.org/content/repositories/snapshots/
> > >>>>>>>>
> > >>>>>>>> I have a bit of cleanup and then I'll push a version to maven
> > >>> central
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>> On Fri, Oct 4, 2013 at 3:33 PM, Barry Books <trs...@gmail.com>
> > >>> wrote:
> > >>>>>>>>
> > >>>>>>>>> After much googling I think I've added iPhone type="date"
> > >> support.
> > >>> I
> > >>>>> had
> > >>>>>>>>> to make a few assumptions to get it to work.
> > >>>>>>>>>
> > >>>>>>>>> 1. The format for type="date" support is yyyy-mm-dd. This is
> what
> > >>> the
> > >>>>>>>>> iPhone appears to use and seems a reasonable choice.
> > >>>>>>>>> 2. The best test I could find to indicate native support is
> > >>>>>>>>>
> > >>>>>>>>> *var* input = document.createElement('input');
> > >>>>>>>>>
> > >>>>>>>>> input.setAttribute('type', 'date');
> > >>>>>>>>>
> > >>>>>>>>> input.value = 'testing';
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>> If the type is date and the value is not testing I'm assuming
> > >>> native
> > >>>>>>> date
> > >>>>>>>>> support.
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>> What I ended up doing was adding a hidden element to support
> > >> native
> > >>>>> date
> > >>>>>>>>> pickers. If I think there is support I hide the real one and
> turn
> > >>> the
> > >>>>>>>>> hidden one into a date. On a form submit I copy the data into
> the
> > >>>>> real
> > >>>>>>>>> element. This way I can support both date formats. It seems to
> > >> work
> > >>>>> on
> > >>>>>>> my
> > >>>>>>>>> iPhone but that's not a large sample.
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>> There is still work to be done but I think I should be able to
> > >> meet
> > >>>>> all
> > >>>>>>>>> the requirements I've seen so far.
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>> On Thu, Oct 3, 2013 at 9:15 PM, Barry Books <trs...@gmail.com>
> > >>>>> wrote:
> > >>>>>>>>>
> > >>>>>>>>>> Unfortunately modernizer does not really support that. From
> the
> > >>> docs
> > >>>>>>>>>>
> > >>>>>>>>>> Modernizr cannot detect that date inputs create a datepicker,
> > >>>>>>>>>>
> > >>>>>>>>>> It is possible to detect if a browser support type="date" but
> > >> that
> > >>>>> does
> > >>>>>>>>>> not mean it has a datepicker. I suspect I'm going to add an
> > >> option
> > >>>>> to
> > >>>>>>> give
> > >>>>>>>>>> it a try.
> > >>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>> On Thu, Oct 3, 2013 at 8:12 PM, Geoff Callender <
> > >>>>>>>>>> geoff.callender.jumpst...@gmail.com> wrote:
> > >>>>>>>>>>
> > >>>>>>>>>>> Sounds good, Barry.
> > >>>>>>>>>>>
> > >>>>>>>>>>> You mentioned earlier that you were "planing on using
> modernizr
> > >>> to
> > >>>>>>> detect
> > >>>>>>>>>>> if type="date" is supported. " so that browsers with good
> HTML5
> > >>>>> date
> > >>>>>>>>>>> support (eg. iOS Safari, Chrome) are left alone. How did that
> > >> go?
> > >>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>>>> On 3 October 2013 12:08, Barry Books <trs...@gmail.com>
> wrote:
> > >>>>>>>>>>>
> > >>>>>>>>>>>> I've uploaded the initial version to github
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> https://github.com/trsvax/tapestry-datepicker
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> I think I'm going to make this standalone project that only
> > >>>>> contains
> > >>>>>>>>>>> the
> > >>>>>>>>>>>> datepicker. This will make it easier for other project to
> just
> > >>>>>>> include
> > >>>>>>>>>>> it.
> > >>>>>>>>>>>> Currently to use it you will have to download and build it.
> > >>> Here
> > >>>>> is
> > >>>>>>> an
> > >>>>>>>>>>>> example usage
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> <t:form>
> > >>>>>>>>>>>>  <t:textfield value="date"
> > >>> t:mixins="datefield/JQueryDatePicker"
> > >>>>>>>>>>>> data-duration="slow"/>
> > >>>>>>>>>>>>  <input type="submit"/>
> > >>>>>>>>>>>> </t:form>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> All that's required is the input type be a date which causes
> > >>>>> Tapestry
> > >>>>>>>>>>> to
> > >>>>>>>>>>>> use a Date Translator to convert the data to/from a string.
> > >> This
> > >>>>> also
> > >>>>>>>>>>>> creates the client side validation. The mixin adds the
> client
> > >>> side
> > >>>>>>>>>>>> interface. In this case the JQuery UI calendar.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> If you prefer you can create your own component and override
> > >> the
> > >>>>>>>>>>> Tapestry
> > >>>>>>>>>>>> one.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> public class DateField extends TextField {
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>  @Mixin
> > >>>>>>>>>>>>  private JQueryDatePIcker mixin;
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> }
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> Questions, commets etc are welcome
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> Barry
> > >>>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>
> > >>>>>>>
> > >>>>>>>
> > >> ---------------------------------------------------------------------
> > >>>>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> > >>>>>>> For additional commands, e-mail: users-h...@tapestry.apache.org
> > >>>>>>>
> > >>>>>>>
> > >>>>>
> > >>>>>
> > >>>>>
> ---------------------------------------------------------------------
> > >>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> > >>>>> For additional commands, e-mail: users-h...@tapestry.apache.org
> > >>>>>
> > >>>>>
> > >>>>
> > >>>
> > >>
> >
> >
>

Reply via email to