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

Reply via email to