JSP 自定义标记中的 i18n 翻译

2024-01-12

是否可以编写自定义 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 中,您可以将ResourceBundle在会话范围内的实例的帮助下Filter or Servlet

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

在 JSP 中像对待 EL 中的任何其他 bean 一样对待它。

${bundle[messageKey]}

Spring 必须可以将其作为 bean 放入会话范围内。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSP 自定义标记中的 i18n 翻译 的相关文章

随机推荐

  • ROR-使用回形针逐步生成多个图像

    我已经使用了 教程 here http sleekd com rails adding multiple images to a rails model with paperclip 但由于某种原因它不起作用 任何人都可以给我一个使用其他表
  • 如何每天自动从 git 存储库更新我的服务器文件

    我是这些服务器相关工作的菜鸟 我正在本地系统中编写一些 PHP 代码 并定期更新 github 中的存储库 每次我想测试我的应用程序时 我都会通过 FTP 将本地系统中的所有文件复制到我的服务器上 然后进行测试 现在我想知道是否有一种方法可
  • 服务和组件属性之间的 Angular2 数据绑定

    我需要对服务和组件属性之间的绑定以及 Angular2 中的数据绑定进行一些澄清 假设我有一个服务 单例 和一个组件 export class Service name Luke object id 1 getName return thi
  • 使用python提取一个句子

    如果该句子中存在特定单词 我想提取确切的句子 谁能告诉我如何用 python 做到这一点 我使用了 concordance 但它只打印单词匹配的行 快速提醒一下 断句实际上是一件非常复杂的事情 句号规则也有例外 例如 先生 或 博士 还有各
  • AttributeError:“KMeans”对象没有属性“inertia_”

    from sklearn cluster import KMeans import numpy import pandas as pd from pandas import read csv boston read csv desktop
  • 计算两个点阵列之间的成对角度矩阵

    我有两个点向量 x and y 成形 n p and m p 分别 举个例子 x np array 0 0 16341 0 98656 0 05937 0 25205 0 96589 0 05937 0 25205 0 96589 0 11
  • 在函数 (group_by) 中使用 dplyr 时出现问题

    我想使用 dplyr 进行一些数据操作 背景 我有一个调查权重和一堆变量 主要是李克特项目 我想对有和没有调查权重的每个类别的频率和百分比进行求和 举个例子 让我们只使用性别变量的频率 结果应该是这样的 gender freq freq w
  • 哪个 .NET 库具有写时复制集合?

    我正在搜索要在 C 程序中使用的 NET 写时复制集合 例如列表 字典等 哪些集合具有该属性 包括参考FSharp Core 然后你就可以访问多种不可变的集合 Set List Map etc 这些位于Microsoft FSharp Co
  • 如何在 Google Test 中使用不同模板测试多个模板类的相同行为?

    我正在练习 C 17 中的排序算法 并按如下方式实现了我的单元测试 以下编译和所有测试都是绿色的 template
  • Funq IoC 容器是否支持属性注入?

    我正在寻找一个 IoC 容器在我的 Compact Framework 应用程序中使用 尝试 Funq 我发现我找不到用它进行属性注入的方法 我浏览了该项目网站上的讨论及其单元测试 但我找不到任何属性注入的示例 Funq 支持属性注入吗 嗯
  • Django 迁移到新数据库

    我刚刚加入一个使用 Django 的项目 并尝试初始化我自己的开发服务器 当我尝试这样做时 我的一个应用程序的迁移失败 此应用程序的模型有一个 sorl thumbnail ImageField 用于添加徽标 尝试迁移时 我收到以下错误消息
  • [over.load]/1 中下面突出显示的句子是什么意思?

    下面突出显示的句子的含义是什么 它与函数模板有什么关系吗 过载 1 http eel is c draft over load 1 并非所有函数声明都可以重载 那些不能成为的 此处指定了重载 如果程序包含以下内容 则该程序是格式错误的 同一
  • ::after 伪元素出现在之前

    我试图在渐变的顶部和底部创建一个微妙的波浪 但是 after 伪元素出现在主要内容之前而不是之后 目前它显示为 before after 主要内容 但我希望它显示为 before 主要内容 after 这是我的代码 gradient bac
  • couchDB、python 和身份验证

    我已经安装了 couchDB v 0 10 0 并尝试通过从 couchDB wiki 下载的 Couch 类中的 python 与它对话 问题是 Create database mydb error unauthorized reason
  • 对“omp_get_max_threads_”的未定义引用

    我在尝试编译项目时遇到以下错误 fortran 使用 gfortran 对 omp get max threads 的未定义引用 对 omp get thread num 的未定义引用 问题是 我的 GCC 版本是 4 4 3 它应该支持
  • 运行 Julia .jl 文件

    我是朱莉娅的新手 刚刚完成了我的第一个程序 我在 julia studio 中编写了代码 并在该程序中对其进行了测试 它为我提供了所有正确的输出 但 shell 将输出分开 就好像它是两个不同的执行一样 我想知道这是否是我的编译器的问题 所
  • R ggplot2 对只有几个数据点的线图进行轻微平滑

    不确定这是否是一个编程问题 如果我有下面的数据 它会生成一个 尖峰 图表 并且我想使用 ggplot2 生成一个稍微平滑的图表 我该如何最优雅地处理它 通常的平滑方法去除了太多信息 我正在考虑的一种方法是在当前数据集之间插入额外的两个数据点
  • 使用空手道框架时,如何有选择地忽略构建中的某些 .feature 文件?

    我必须忽略使用空手道框架的集成测试套件的某些 feature 测试文件 有什么方法可以有选择地排除某些文件 是的 答案是tags https github com intuit karate test suites Example igno
  • 制作Asus google Nexus 7的模拟器

    我有 android sdk 更新到最新版本 v21 现在我想要的是 制作 Asus google Nexus 7 的模拟器 包含 800 x 1280 分辨率和 216 dpi 当我将 sdk 更新到最新版本时 我无法编辑模拟器当前的 d
  • JSP 自定义标记中的 i18n 翻译

    是否可以编写自定义 JSP 标记来获取 i18n 消息键并输出给定 请求的翻译短语 通常在 JSP JSTL 中 我这样做