Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用自定义值初始化jsp标记?_Java_Jsp - Fatal编程技术网

Java 如何使用自定义值初始化jsp标记?

Java 如何使用自定义值初始化jsp标记?,java,jsp,Java,Jsp,我有一些jsp标记用于生成字符串的翻译,例如将生成给定语言中“hello”的翻译。问题是,在它发生之前,我需要能够将语言和文件名传递给tags类 是否有线程安全的方法将任何参数传递给文件顶部的tags类,然后它将记住并用于该类中所有未来的标记 例如,在我的文件顶部,我希望能够执行以下操作: <x:myTag lang="english" file="signup" /> 之后,每当我做,它都应该知道我指的是英语,并在文件“signup”中查找字符串 这可能吗?您可以使用JSTL

我有一些jsp标记用于生成字符串的翻译,例如
将生成给定语言中“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");