Java 如何使用自定义值初始化jsp标记?
我有一些jsp标记用于生成字符串的翻译,例如Java 如何使用自定义值初始化jsp标记?,java,jsp,Java,Jsp,我有一些jsp标记用于生成字符串的翻译,例如将生成给定语言中“hello”的翻译。问题是,在它发生之前,我需要能够将语言和文件名传递给tags类 是否有线程安全的方法将任何参数传递给文件顶部的tags类,然后它将记住并用于该类中所有未来的标记 例如,在我的文件顶部,我希望能够执行以下操作: <x:myTag lang="english" file="signup" /> 之后,每当我做,它都应该知道我指的是英语,并在文件“signup”中查找字符串 这可能吗?您可以使用JSTL
将生成给定语言中“hello”的翻译。问题是,在它发生之前,我需要能够将语言和文件名传递给tags类
是否有线程安全的方法将任何参数传递给文件顶部的tags类,然后它将记住并用于该类中所有未来的标记
例如,在我的文件顶部,我希望能够执行以下操作:
<x:myTag lang="english" file="signup" />
之后,每当我做
,它都应该知道我指的是英语,并在文件“signup”中查找字符串
这可能吗?您可以使用JSTL的作用域请求
<c:set scope="request" var="lang" value="english" />
在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>
将语言存储在用户会话中,然后使用EL检索它。我的问题是,我是否需要在每个标记中指定这些变量,或者如果我在文件顶部指定这些变量,那么它是否会在以后每次调用标记时都假定这些值?您可以在主页中设置变量,并且可以在标记中使用该变量(对于给定的请求)。假设
需要参数foo
。我是否需要在每次调用
时指定此foo
参数,例如通过执行
,或者是否有方法在myTag
上为当前请求设置foo
的默认值,以便以后每次调用
时,我不需要在同一请求中指定foo
,您不必指定参数。我将用一个更全面的例子更新答案。让我更清楚。在我的例子中,我的标记输出是由java类生成的。在这个java类中,我有一个名为foo
的私有变量。无论何时从jsp调用标记的doTag()
,我都需要一个foo
值。我的问题是,每次在同一个请求中,是否会使用标记类的同一个实例生成输出,因此,如果我指定foo
一次,它将记住以前的值?
<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>
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
String lang = (String) request.getAttribute("lang");