【问题标题】:Using EL with parameters使用带参数的 EL
【发布时间】:2014-04-23 19:24:06
【问题描述】:

我们正在寻找外部化我们的 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 美元”(英语)或“时代 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>

我是否遗漏了一些明显的东西?

【问题讨论】:

    标签: java jsp internationalization el


    【解决方案1】:

    是的,您错过了 &lt;fmt:message&gt; 接受参数并在幕后使用标准 MessageFormat 类的事实。所以你只需要

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

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

    wasVsNow=Was {0} - now {1}
    

    【讨论】:

      猜你喜欢
      • 2013-09-29
      • 1970-01-01
      • 2013-03-25
      • 2012-01-09
      • 2011-03-18
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多