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

Jochen Kemnade commented on TAP5-2439:
--------------------------------------

Right, the labels should be generated in the same way. We need to discuss what 
the property key should be.
The documentation for Select says "In the very rare event that there's a naming 
conflict, you may qualify the enum value with its class name", so I'd expect 
{{Honorific.MR=Mr.}} and probably even 
{{org.example.entities.Address.Honorific.MR}} or 
{{org.example.entities.Address$Honorific.MR}} (not sure about that one) to work.
By the way, in the description, you write that {{Address$Honorific.MR=Mr.}} is 
needed in the app.properties file. I guess, that will only work with your 
patched version (that does the {{replace}}.

> Inconsistent label keys in message catalog for enums defined in inner classes
> -----------------------------------------------------------------------------
>
>                 Key: TAP5-2439
>                 URL: https://issues.apache.org/jira/browse/TAP5-2439
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.4
>            Reporter: Michael Dukaczewski
>            Priority: Minor
>         Attachments: Address.java, Example.java, Example.properties, 
> Example.tml
>
>
> When customizing the label of an enum that is defined inside a class two 
> different key in the message catalog are needed.
> Example, given the following class:
> {code:title=Address.java}
> public class Address {
>    public enum Honorific {MR, MRS, MISS, DR}
>    // [...]
> }
> {code}
> Two entries per value in the message catalog are needed to get a consistent 
> output:
> {code:title=app.properties}
> Honorific.MR=Mr.
> Address$Honorific.MR=Mr.
> {code}
> The problem is that there are two different methods in TapestryInternalUtils 
> to get a label for an enum:
> {code:title=TapestryInternalUtils.java}
> String getLabelForEnum(Messages messages, String prefix, Enum value)
> String getLabelForEnum(Messages messages, Enum value)
> {code}
> The former is called by EnumSelectModel, where the latter is used by 
> PropertyDisplayBlocks.
> Although the second method calls the first, but here the prefix is generated 
> by TapestryInternalUtils.lastTerm(). In the other callings of the first 
> method Class.toSimpleName() is used, which does not produce the same result.
> I think the best solution would be to remove the method with 3 arguments 
> completely, because there is no meaningful use for it. All labels for an enum 
> should be generated consistent in the same way.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to