2014-03-07 40 views
1

我有一些用於生成字符串翻譯的jsp標記,例如<x:lang name="hello" />會生成給定語言中'hello'的翻譯。問題是,我需要能夠在語言發生之前將語言和文件的名稱傳遞給標記類。如何用自定義值初始化jsp標籤?

是否有線程安全的方式將任何參數傳遞給文件頂部的標籤類,然後它將記住並使用該類中所有將來的標籤?

例如,在我的文件的頂部,我希望能夠做這樣的事情:

<x:myTag lang="english" file="signup" /> 

在那之後,每當我做<x:myTag string="something" />,應該知道我指轉換爲英文,並在文件'註冊'中查找字符串。

這可能嗎?

+0

店的語言:

<c:choose> <c:when test="${lang eq 'english'}">Hello World!</c:when> <c:when test="${lang eq 'french'}">Bonjour le monde !</c:when> </c:choose> 

如果使用Java標籤,你可以得到價值在用戶會話中,然後使用EL檢索它。 –

回答

2

您可以使用JSTL的<c:set>,範圍request

<c:set scope="request" var="lang" value="english" /> 

然後在標籤,你可以使用var值與EL:${lang}


編輯:添加了一個更完整的例子。

JSP頁面:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<html> 
<body> 
    <c:set scope="request" var="lang" value="english" /> 
    <x:hello /> 
</body> 
</html> 

而且在hello標籤:

HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); 
String lang = (String) request.getAttribute("lang"); 
+0

我的問題是,我是否需要爲每個標籤指定這些變量,或者如果我在文件的頂部指定它,那麼它將爲我稱之爲標籤的每個未來時間都假設這些值? –

+0

您可以在主頁面中設置變量,並可以使用變量內部的變量(對於給定的請求)。 – obourgain

+0

可以說''需要參數'foo'。每次我調用''時,我是否需要指定這個'foo'參數,例如通過執行''或者是否有方法將'foo'的默認值設置爲on 'myTag'代表當前請求,所以在將來每次調用''時,我都不需要指定'foo'? –