On Tue, Apr 10, 2012 at 10:56 AM, Christoph Leiter
<[email protected]> wrote:
> That would work, but this causes another problem because I'm using the
> required attribute to decorate the HTML.

Since 1.5 Wicket's validators are also Behaviors. See
org.apache.wicket.validation.validator.AbstractValidator for example
how to make your own IValidator to be also a Behavior.
This way you can use Behavior's onComponentTag() to manipulate the markup.

But I'm not hard against making
org.apache.wicket.markup.html.form.FormComponent#reportRequiredError()
protected.
Please file a ticket and if there are no objections then we will relax
the visibility.

>
>
> Martin Grigorov (2012-04-10 10:36):
>
>> On Tue, Apr 10, 2012 at 10:33 AM, Christoph Leiter
>> <[email protected]>  wrote:
>>>
>>> Sorry, I think I didn't make myself clear enough.  I don't want to
>>> translate
>>> just the "Required" key for several languages.
>>>
>>> What I do is that I have several language specific text fields on the
>>> same
>>> page, e.g. new LangTextField("name", model, Language.ENGLISH), new
>>> LangTextField("name", model, Language.GERMAN). The user can enter the
>>> "name"
>>> field in many languages with the different LangTextFields. (This is the
>>> backend area. The user enters the texts in many languages and on the
>>> frontend the text in the correct language gets displayed.) Based on the
>>> language attribute of the text field a more specific "Required" key
>>> should
>>> be provided.
>>>
>>> The English properties files would look like:
>>> RequiredEN=Please enter the field ${label} in English
>>> RequiredDE=Please enter the field ${label} in German
>>>
>>> For German:
>>> RequiredEN=Bitte fuellen Sie das Feld ${label} in Englisch aus
>>> RequiredDE=Bitte fuellen Sie das Feld ${label} in Deutsch aus
>>>
>>> I don't think that can easily be achieved without overriding
>>> reportRequiredError() (or the hack I described).
>>
>>
>> Or by using your own custom IValidator instead of using
>> FormComponent#setRequired(true).
>>
>>>
>>>
>>> Christoph
>>>
>>> Martin Grigorov (2012-04-10 09:40):
>>>
>>>> Hi,
>>>>
>>>> The current impl of this method is just: error(new
>>>> ValidationError().addKey("Required"));
>>>> I.e. it just adds an error for this field and later the i18n mechanics
>>>> will use 'Required' as a key to find the actual message in the
>>>> resource bundles.
>>>> So you can provide several bundles for the different languages and
>>>> provide custom value for this key.
>>>>
>>>> On Fri, Apr 6, 2012 at 12:37 PM, Christoph Leiter
>>>> <[email protected]>    wrote:
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> currently FormComponent#reportRequiredError() is a private method.
>>>>> Could
>>>>> it
>>>>> be made protected to allow users to override the default
>>>>> implementation?
>>>>>
>>>>> My use case is that I have a custom implementation of TextField that is
>>>>> language specific. Instead of showing the user "Field X is required" I
>>>>> want
>>>>> to display "Field X in language L is required". Currently I have to
>>>>> override
>>>>> FormComponent#validate() and inline validateRequired() there just to be
>>>>> able
>>>>> to provide my own implementation of reportRequiredError(), which is
>>>>> quite
>>>>> cumbersome and brittle.
>>>>>
>>>>> But if there's another, better solution, which doesn't need to make the
>>>>> method protected, I'd be happy to hear it as well.
>>>>>
>>>>>
>>>>> Thanks
>>>>> Christoph
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>>
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

Reply via email to