Как скомпилировать файл javascript как jsp? - PullRequest
1 голос
/ 14 февраля 2011

Я хотел бы иметь возможность использовать сервлет JSP в моих файлах JavaScript для целей i18n. Возьмем, к примеру, следующий JavaScript:

function you_did_it_wrong() {
    alert("<fmt:message key="you.did.it.wrong" />");
}

Я попытался настроить JspServlet в моем файле web.xml следующим образом:

<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>

Но когда я вызываю файл js, он возвращается без обработки сервлетом.

Ответы [ 2 ]

2 голосов
/ 14 февраля 2011

Божо дал правильный намек.Однако я хотел бы ответить на проблему concrete .


Данный фрагмент кода будет fail , когда taglib fmt не объявлен в topфайла:

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

Так что просто убедитесь, что он есть выше в вашем файле JS.

Запись сервлета JSP выглядит хорошо, хотя я думаю, что я бы предпочел использовать только это:1014 *

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

(jsp - это servlet-name встроенного Tomcat JspServlet, который вы можете найти в его /conf/web.xml)

1 голос
/ 14 февраля 2011

Есть лучшие способы сделать это, чем обслуживать файлы .js через сервлет jsp.

Проверьте этот вопрос . В итоге все переменные были объявлены в файле .js, и они прошли через метод init:

init({somgMsg: '<fmt:.../>', anotherMsg: '<fmt:... />'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...