如何用自定义值初始化jsp标签?

时间:2014-03-07 14:03:47

标签: java jsp

我有一些用于生成字符串翻译的jsp标签,例如<x:lang name="hello" />将生成给定语言中“hello”的翻译。问题是,我需要能够在语言发生之前将语言和文件名传递给标记类。

是否有一种线程安全的方式将任何参数传递给文件顶部的tags类,然后它会记住并用于该类中所有未来的标记?

例如,在我的文件顶部,我希望能够做到这样的事情:

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

之后,每当我<x:myTag string="something" />时,它应该知道我指的是英语,并在文件'注册'中查找字符串。

这可能吗?

1 个答案:

答案 0 :(得分:2)

您可以使用范围为request的JSTL中的<c:set>

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

然后在标签中,您可以使用带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标签中:

<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标记,则可以使用以下命令获取值:

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