cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Leszek Gawron <lgaw...@mobilebox.pl>
Subject Re: Locale Bug in CForm Form.java ?
Date Thu, 11 Aug 2005 13:24:30 GMT
Thomas Lutz wrote:
> Leszek Gawron wrote:
> 
>> Thomas Lutz wrote:
>>
>>>
>>> private Locale locale = Locale.getDefault();
>>>
>>> It takes the default locale from the host, but shouldn't it take the 
>>> locale set via the browser or the LocaleAction.java ? So the line 
>>> should rather be something like:
>>>
>>> private Locale locale = I18nUtils.findLocale(....); ?
>>
>>
>>
>> in your own cocoon webapp you can do:
>> var form = new Form( "cocoon:/form-def/" + config.filterModelName );
>> form.locale = determineLocale();
>>
>> and implement determineLocale() with any logic you like.
>>
>> For cocoon samples: we should probably make use of LocaleAction.
>>
> I tried to do this in javaflow (as I only use java as flow script 
> language), that's not that easy. 
> org.apache.cocoon.forms.formmodel.Form.java has no setter for it's 
> member locale, and locale is private... so no chance of tweaking in ?
I do not know how you do it in javaflow but here is how 
HandleFormSubmitAction does it:

Form form = formManager.createForm(source);

Request request = ObjectModelHelper.getRequest(objectModel);
FormHandler formHandler = null;

if (formHandlerClassName != null) {
     // TODO cache these classes
     Class clazz = Class.forName(formHandlerClassName);
     formHandler = (FormHandler)clazz.newInstance();
     LifecycleHelper.setupComponent(formHandler, null, null, manager, null);
     form.setFormHandler(formHandler);
}

FormContext formContext = new FormContext(request, locale);

boolean finished = form.process(formContext);
request.setAttribute(formAttribute, form);

you can pass locale via FormContext instance.

> What's the reason for Locale.getDefault() ? At least I would expect to 
> behave forms like all other I18N components, and take the locale from 
> the user agent, so dates and whatsoever get a proper formatting in the 
> forms... or am I missing something ?
I think this is a good choice that core cforms classes do not depend on 
environment. Every user is free to choose the method to determine 
locale. You could implement a scenario where locale is fetched from user 
personal settings stored in database.

-- 
Leszek Gawron                                      lgawron@mobilebox.pl
IT Manager                                         MobileBox sp. z o.o.
+48 (61) 855 06 67                              http://www.mobilebox.pl
mobile: +48 (501) 720 812                       fax: +48 (61) 853 29 65

Mime
View raw message