gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:58:03 24 4
gpt4 key购买 nike

我正在调整 http://displaytag.svn.sourceforge.net/viewvc/displaytag/trunk/displaytag/src/main/java/org/displaytag/localization/I18nWebworkAdapter.java?revision=1173&view=markup 处的代码从 Displaytag 中的键获取 i18n 资源(参见下面的代码)。

我想知道这是否是最干净的方法(我不喜欢那里的迭代器)。然而,我看到的唯一替代方案是从 ActionInitation (ActionContext.getContext().getActionInvocal().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;
}
}

// if user explicitely added a titleKey we guess this is an error
if (message == null && resourceKey != null)
{
log.debug(Messages.getString("Localization.missingkey", resourceKey)); //$NON-NLS-1$
message = UNDEFINED_KEY + resourceKey + UNDEFINED_KEY;
}

return message;
}

最佳答案

您可以使用 LocalizedTextUtil 类来查找消息。

LocalizedTextUtil.findDefaultText(key, ActionContext.getContext().getLocale());

此方法采用可选参数Object[],该参数将替换到消息中。

关于struts2 - 从 ActionContext 获取 TextProvider 的最佳方法 (i18n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11632222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com