2014-04-23 40 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}