https://issues.apache.org/jira/browse/WICKET-4449
On Wed, Mar 14, 2012 at 6:07 PM, Martin Grigorov <[email protected]> wrote: > This will work as well. > Currently our code uses a lot Component#error(OurSerializableClass) > and our custom FeedbackPanel checks for specializations of > OurSerializableClass. > With your suggestion FeedbackPanel will have to check for > ValidationErrorFeedback then get our custom IValidationError out of it > and then extract our OurSerializableClass out of the error. So it is > just few more steps to get to the Serializable ... > > I'll prepare a patch. > > On Wed, Mar 14, 2012 at 5:59 PM, Igor Vaynberg <[email protected]> > wrote: >> by default the message should bring the error with it, thus >> ValidationErrorFeedback. this is so users can customize feedbackpanels >> and get access to ValidationError instances. >> >> sounds like your code should check for ValidationErrorFeedback and >> pull your message out of it... >> >> -igor >> >> >> On Wed, Mar 14, 2012 at 8:48 AM, Martin Grigorov <[email protected]> >> wrote: >>> You almost got it :-) >>> Returning Serializable instead of String is half of it. >>> The other half is to replace >>> >>> error(new ValidationErrorFeedback(error, message)); >>> with >>> error(message); >>> >>> in FormComponent#error() >>> >>> The 'message' can bring the 'error' that produced it if it needs it. >>> >>> OK ? >>> Wicket 6.0 only of course. >>> >>> On Wed, Mar 14, 2012 at 5:41 PM, Igor Vaynberg <[email protected]> >>> wrote: >>>> i dont quite follow all this, but if you just want to change >>>> >>>> IValidationErrror#getErrorMessage() to return a Serializable instead >>>> of a String im fine with that. >>>> >>>> -igor >>>> >>>> On Wed, Mar 14, 2012 at 6:17 AM, Martin Grigorov <[email protected]> >>>> wrote: >>>>> Hi, >>>>> >>>>> A colleague of mine asked me why ValidationError doesn't work with >>>>> Serializable as Component's #info, #error, #debug, ... methods. >>>>> I looked deeper and I saw a solution: write a custom IValidationError >>>>> which keeps the Serializable and use it later. >>>>> >>>>> Problem 1) IValidationError requires from me to deal with >>>>> IErrorMessageSource >>>>> In my case with our custom FeedbackPanel that knows how to render our >>>>> custom Serializables this is not needed >>>>> Workaround: just return empty string to keep FormComponent#error() >>>>> quiet (otherwise it logs a warning if the returned message is null) >>>>> >>>>> Problem 2) With my custom IValidationError impl I have to override >>>>> FormComponent#error() to be able to use it >>>>> >>>>> And here I start thinking that IErrorMessageSource is something that >>>>> is related to org.apache.wicket.validation.ValidationError because it >>>>> works with resource keys (message bundles). >>>>> I think it would be better if IValidationError actually had a method >>>>> that returns a Serializable. In this case the current code of >>>>> FormComponent#error() will be in o.a.w.validation.ValidationError and >>>>> it will return org.apache.wicket.markup.html.form.ValidationErrorFeedback. >>>>> And my custom IValidationError will return my custom Serializable impl >>>>> >>>>> So the new body of FormComponent#error(IValidatable) will be: >>>>> >>>>> public void error(IValidationError error) >>>>> { >>>>> error(error.getMessage()); // getMessage() returns the Serializable >>>>> } >>>>> >>>>> I doubt there are many custom impls of IErrorMessageSource in the wild. >>>>> >>>>> -- >>>>> Martin Grigorov >>>>> jWeekend >>>>> Training, Consulting, Development >>>>> http://jWeekend.com >>> >>> >>> >>> -- >>> Martin Grigorov >>> jWeekend >>> Training, Consulting, Development >>> http://jWeekend.com > > > > -- > Martin Grigorov > jWeekend > Training, Consulting, Development > http://jWeekend.com -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com
