[
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:
http://www.mail-archive.com/[email protected]/msg39587.html
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: 5.1.0.5
> 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.