繁体   English   中英

使用带参数的EL

[英]Using EL with parameters

我们希望外化我们的JSP,它们目前包含以下内容:

<c:when test="${productObject.was}"><span>Was ${price} - now ${salePrice}</span><br /></c:when>

我们已经有了一个Java函数(lm.getString),它可以用于此目的 - 它接受英文字符串(包括参数标签),替换变量的散列图和语言,例如

wasPriceString = "Was <price> - now <salePrice>";
lang = "ESP";
HashMap hm = new HashMap();
hm.put("salePrice", price);
hm.put("price", regPrice);
wasPriceString = lm.getString(wasPriceString, hm, lang);

并返回已翻译的字符串,插入参数,例如“$ 17.99 - 现在$ 11.50”(英语)或“era $ 17.99 - ahora $ 11.50”(西班牙语)。

我们在Java代码中使用它,但现在我也想改变JSP。 我的问题是,这可以在JSP本身(传递参数)中轻松完成吗? 如果没有,最好的选择是什么? 我宁愿不简单地翻译输出文本,因为那只是hacky,并导致这种邪恶:

<c:when test="${productObject.was}"><span><fmt:message key="textWas_ui"/> ${price} - <fmt:message key="textNow_lc"/> ${salePrice}</span><br /></c:when>

我错过了一些明显的东西吗

是的,您错过了<fmt:message>接受参数的事实,并在后台使用标准的MessageFormat类。 所以你需要

<fmt:message key="wasVsNow">
    <fmt:param value="${price}"/>
    <fmt:param value="${salePrice}"/>
</fmt:message>

在您的JSP中,以及在包含国际化消息的属性文件中:

wasVsNow=Was {0} - now {1}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM