I've been investigating some i18n issues in the 2.1.x branch and found that the search algorithm used by the Text tag differs from that of UIBean. The Text tag iterates through the ValueStack looking for the first TextProvider and invokes getText(...) on the first found. The UIBean executes the OGNL expression "getText(String)", which matches this method of the first TextProvider.

This works almost all the time, but I have two issues with it:
- the inconsistent search algorithm causes inconsistent behaviour when there's something unexpected in the stack (https://issues.apache.org/struts/browse/WW-2539) - the OGNL expression is slow (https://issues.apache.org/struts/browse/WW-1681) and fragile (https://issues.apache.org/struts/browse/WW-2511)

I'm going to remove the hardcoded OGNL expressions from UIBean and Label and replace them with the same algorithm used by Text. I would have proceeded without saying so but I also discovered that the TestAction used by the unit tests relies on getText being invoked directly by OGNL rather than its TextProvider implementation, so the consequences may be larger that I first imagined.

Please speak up if you see any potential issues.

regards,
Jeromy Evans



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to