Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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
如何将javascript文件编译为jsp?_Javascript_Jsp_Servlets - Fatal编程技术网

如何将javascript文件编译为jsp?

如何将javascript文件编译为jsp?,javascript,jsp,servlets,Javascript,Jsp,Servlets,我希望能够在我的JavaScript文件上使用JSPServlet来实现i18n目的。以以下JavaScript为例: function you_did_it_wrong() { alert("<fmt:message key="you.did.it.wrong" />"); } 函数你做错了(){ 警报(“”); } 我尝试在web.xml中设置JspServlet,如下所示: <servlet> <servlet-name>prepro

我希望能够在我的JavaScript文件上使用JSPServlet来实现i18n目的。以以下JavaScript为例:

function you_did_it_wrong() {
    alert("<fmt:message key="you.did.it.wrong" />");
}
函数你做错了(){
警报(“”);
}
我尝试在web.xml中设置JspServlet,如下所示:

<servlet>
    <servlet-name>preprocessor</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>preprocessor</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>

预处理器
org.apache.jasper.servlet.JspServlet
预处理器
*.js

但是当我调用js文件时,它会返回,而不会被servlet处理。

有比通过jsp servlet提供.js文件更好的方法

。我最终在
.js
文件中声明了所有变量,并让它们通过init方法传递:

init({somgMsg: '<fmt:.../>', anotherMsg: '<fmt:... />'});
init({somgMsg:'',anotherMsg:''});

波佐给出了正确的提示。不过,我想回答一个具体的问题


fmt
taglib未在文件顶部声明时,给定的代码段将失败:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:setLocale value="${language}" />
<fmt:setBundle basename="com.example.i18n.text" />

因此,只需确保它在您的JS文件中

JSP servlet条目看起来不错,但我认为我更愿意使用以下内容:

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>

jsp
*.js

jsp
是Tomcat内置的
JspServlet
servlet名称,您可以在它的
/conf/web.xml
中找到它)

Javascript与Java无关。您应该用Java编写JSP servlet。如果您真的想在jsp servlet中运行javascript,请安装并使用它。我认为我还不够清楚。我并没有试图使用javascript语法来编写java代码。我正在尝试使用jspservlet编译和运行我的js文件。我可以用扩展名.jsp命名我的js文件,并使用reference,这将起作用,但我希望它也能用.js.Ah命名文件。您的配置似乎是正确的。编辑配置后是否重新启动了Apache?*也许最好同时问这样的问题,我想最好删除javascript标记,因为你的问题与javascript无关——它也可以是任何其他扩展。它通常与javascript相关,所以我添加了标记。我刚刚意识到他重新定义了jsp servlet,而不是使用原来的:)(+1).顺便说一句,注意这样做是依赖于servlet容器的。这在Jetty中也适用。但是它不适用于google app engine sdk 1.4.0(使用Jetty…go figure)。其他人在GAE方面也有问题:。即使我的问题没有解决,我也会给你分数。如果你能在GAE中找到解决方法,我会给你加分。不客气。对不起,我不做GAE。作为替代方法,创建一个JSP文件,顶部有
,将必要的JS代码放在那里,最后将其包含在
中>。感谢您的输入,但在我的情况下,我希望将jsp中的所有javascript外部化。