如何在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
相关产品推荐
相关产品推荐

