spring-JSP自定义标记中的i18n翻译

spring-JSP自定义标记中的i18n翻译,第1张

概述是否可以编写自定义JSP标记以获取i18n消息密钥并输出给定​​请求的翻译短语?通常,在JSP / JSTL中,我这样做:<fmt:message key='${messageKey}'><fmt:param>arg1</fmt:param></fmt:message> 我得到翻译短语.现在,我需要执行以下 *** 作

是否可以编写自定义JsP标记以获取i18n消息密钥并输出给定​​请求的翻译短语?

通常,在JsP / JsTL中,我这样做:

<fmt:message key="${messageKey}"><fmt:param>arg1</fmt:param></fmt:message>

我得到翻译短语.现在,我需要执行以下 *** 作(这样做有充分的理由):

<custom:translate key="${messageKey}" arg="arg1"/>

但是我不知道如何在自定义标签代码中查找翻译. Tagsupport基类提供了一个pageContext,从中可以获取一个具有Locale的ServletRequest,但是我该如何查找密钥的转换呢?

我使用Spring 3.0,并在我的application-context.xml中定义了ReloadableBundleMessageSource,因此可以调用:

messageSource.getMessage(    key,new Object[] {arg},pageContext.getRequest().getLocale());

但我认为我不能将messageSource注入自定义标签,可以吗?否则,我可以实例化一个新的实例,但是它会为每个调用加载成千上万的译文吗?我不想求助于使messageSource成为静态类的静态成员.最佳答案我不使用Spring,但是在“普通” JsP中,您可以借助Filter或Servlet将ResourceBundle实例放入会话范围

ResourceBundle bundle = ResourceBundle.getBundle(basename,request.getLocale());request.getSession().setAttribute("bundle",bundle);

像在EL中使用其他bean一样,在JsP中对其进行处理.

${bundle[messageKey]}

Spring必须有可能将其作为bean放入会话范围. 总结

以上是内存溢出为你收集整理的spring-JSP自定义标记中的i18n翻译 全部内容,希望文章能够帮你解决spring-JSP自定义标记中的i18n翻译 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1233826.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存