[
https://issues.apache.org/struts/browse/WW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_42855
]
Sauli Ketola commented on WW-2387:
----------------------------------
In the patch I compare the msg to the actualName, not the defaultMessage. I
believe the actualName is the default only when a defaultMessage is not
provided. In my case I have overridden the text provider methods in the action
with my own implementation that also reads messages from the portlet
preferences. And it happens sometimes that a DefaultTextProvider is in the
stack before my action and the text tag retrieves the message from that.
> Text tag doesn't consider having several TextProviders in stack
> ---------------------------------------------------------------
>
> Key: WW-2387
> URL: https://issues.apache.org/struts/browse/WW-2387
> Project: Struts 2
> Issue Type: Bug
> Components: Other
> Affects Versions: 2.1.1
> Reporter: Sauli Ketola
> Attachments: patchfile.txt
>
>
> The Text tag used for getting messages to the page will only look inside the
> first TextProvider found in the stack. In my case I found that there were
> three TextProviders in the stack so the page displays the correct message
> only when the first TextProvider contains the message I'm looking for.
> Code from org.apache.struts2.components.Text.java (breaks after the 1st
> TextProvider):
> <code>
> for (Iterator iterator = getStack().getRoot().iterator();
> iterator.hasNext();) {
> Object o = iterator.next();
> if (o instanceof TextProvider) {
> TextProvider tp = (TextProvider) o;
> msg = tp.getText(actualName, defaultMessage, values, stack);
> break;
> }
> }
> </code>
> The code will work if I insert for example
> <code>
> if(StringUtils.equals(msg, actualName)) //actualName is the default message
> returned by the TextProvider if nothing is found.
> continue;
> </code>
> before the break.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.