You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSP中填充带占位符的<fmt:message>消息内容?

处理JSP中带占位符的<fmt:message>消息

嘿,这个问题我太熟悉啦!当你的国际化消息里带有{0}这类占位符时,<fmt:message>标签本身就提供了完美的解决方案,不用额外写复杂的替换逻辑,主要有两种常用方式:

方式一:嵌套<fmt:param>标签填充参数

这是最常用也最直观的方式,直接在<fmt:message>标签内部嵌套<fmt:param>,参数会按顺序对应占位符的索引(从0开始):

直接输出的情况

<!-- 假设消息文件中conditions.text的值是"Hello {0}" -->
<fmt:message key="conditions.text">
    <fmt:param value="World" />
</fmt:message>
<!-- 最终输出:Hello World -->

存入变量后输出的情况

如果需要把填充后的消息存入变量再使用,只需要加上var属性即可:

<fmt:message key="conditions.text" var="greeting">
    <fmt:param value="World" />
</fmt:message>
${greeting} <!-- 输出:Hello World -->

多占位符的场景

如果消息有多个占位符(比如{0}, welcome to {1}),按顺序添加<fmt:param>就行:

<!-- 消息内容:"Hello {0}, welcome to {1}" -->
<fmt:message key="welcome.text">
    <fmt:param value="Alice" />
    <fmt:param value="Stack Overflow" />
</fmt:message>
<!-- 输出:Hello Alice, welcome to Stack Overflow -->

方式二:使用arguments属性批量传递参数

如果你习惯用EL数组的方式批量传参,可以用<fmt:message>的arguments属性,参数数组的索引对应占位符的索引:

<!-- 单参数情况 -->
<fmt:message key="conditions.text" arguments="${['World']}" var="greeting" />
${greeting}

<!-- 多参数情况 -->
<fmt:message key="welcome.text" arguments="${['Bob', 'Java World']}" />
<!-- 输出:Hello Bob, welcome to Java World -->

另外补充个小细节:如果参数是来自后台的变量,直接用EL表达式作为value或者数组元素就行,比如<fmt:param value="${currentUser.name}" />,非常灵活。

内容的提问来源于stack exchange,提问作者wutzebaer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:07:35