2014-04-23 34 views
0

我们正在寻找我们外部化JSP的,这是目前包含这样的事情:使用EL与参数

<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美元 - 阿霍拉11.50美元”(西班牙语)。

我们在我们的Java代码中使用了这个,但是现在我正在寻找更改JSP的方法。我的问题是,这可以很容易地完成,在JSP本身(传递参数)?如果不是,最好的选择是什么?我宁愿不能简单地输出文本,因为这只是哈克,并导致这种邪恶的:

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

我失去了一些东西明显?

回答

2

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

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

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

wasVsNow=Was {0} - now {1}