tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bryan Lewis (JIRA)" <j...@apache.org>
Subject [jira] Commented: (TAP5-725) Last translator in configuration becomes default translator
Date Wed, 07 Oct 2009 21:19:32 GMT

    [ https://issues.apache.org/jira/browse/TAP5-725?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12763272#action_12763272

Bryan Lewis commented on TAP5-725:

I had a similar request and HLS suggested it was a JIRA-worthy bug.  See thread:


I too would like to be able to specify a translator on a per-field basis, as I was able to
do in Tap 3 and 4.  At the moment I work around it by declaring an extrr wrapper class like
PhoneNumberHolder or CurrencyHolder, where I stuff my value at the start of the page and extract
it at submit.  The distinct class gives me something to bind the translator to.

> Last translator in configuration becomes default translator
> -----------------------------------------------------------
>                 Key: TAP5-725
>                 URL: https://issues.apache.org/jira/browse/TAP5-725
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions:
>            Reporter: Lukasz Jazgar
>         Attachments: TrimTranslator.java
> I've created simple translator TrimTranslator, which works on String fields. It is same
as StringTranslator. Only difference is it removes all white spaces at beginning and end of
string. I will attach java source file of it.
> When I've contributed this translator to TranslatorSource service, new translator became
default for type String. Every string value incoming from client is now trimmed. It's wrong.
I expect new translator will work only when I explicitly declare it for form field component.
> As I see, historically (more than 1 year ago) there was 2 distinct services TranslatorSource
and TranslatorDefaultSource. It was clear. 
> Later they was joined to one. Why? Current TranslatorSource works fine only if there
is one translator for every type or we want to override default translator. There is no possibility
to create new alternative translators. 
> Proposal of resolution:
> Maybe default translators for type should be distinguished by it's name property, which
is unique, not only type?
> Default translators should have name same as name of type. So, "string" is default for
java.lang.String, "boolean" is default for java.lang.Boolean, and so on. Any other like "trim"
or "yesno" (example in jumpstart app) should need explicit declaration.
> It boils down to replacing in constructor of TranslatorSourceImpl:
> typeToTranslator.put(t.getType(), t);
> with:
> if (t.getType().getSimpleName().equalsIgnoreCase(t.getName()) {
>             typeToTranslator.put(t.getType(), t);
> }

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message