小编mma*_*ida的帖子

从ActionContext(i18n)获取TextProvider的最佳方法

我正在修改http://displaytag.svn.sourceforge.net/viewvc/displaytag/trunk/displaytag/src/main/java/org/displaytag/localization/I18nWebworkAdapter.java?revision=1173&view=markup上的代码.来自Displaytag中键的i18n资源(参见下面的代码).

我想知道这是否是最干净的方法(我不喜欢那里的迭代器).然而,我看到的唯一选择是从ActionInvocation(ActionContext.getContext().getActionInvocation().getAction())获取Action并依赖于对ActionSupport的强制转换来获取资源(实现TextProvider).但这似乎不太安全(行动可能不会扩展行动支持).

你有什么其他的建议?

/**
 * @see I18nResourceProvider#getResource(String, String, Tag, PageContext)
 */
public String getResource(String resourceKey, String defaultValue, Tag tag, PageContext pageContext)
{

    // if resourceKey isn't defined either, use defaultValue
    String key = (resourceKey != null) ? resourceKey : defaultValue;

    String message = null;
    OgnlValueStack stack = TagUtils.getStack(pageContext);
    Iterator iterator = stack.getRoot().iterator();

    while (iterator.hasNext())
    {
        Object o = iterator.next();

        if (o instanceof TextProvider)
        {
            TextProvider tp = (TextProvider) o;
            message = tp.getText(key, null, null);

            break;
        }
    }

    // …
Run Code Online (Sandbox Code Playgroud)

struts2 displaytag

4
推荐指数
1
解决办法
1795
查看次数

标签 统计

displaytag ×1

struts2 ×1