Используя JSP кодируют в JavaScript

По некоторым причинам, стили не имеют определения для класса default , и это является причиной, чтобы открыть issue . В качестве вспомогательного решения добавьте определение вручную:

.el-date-table td.default span {
    color: #409eff;
    font-weight: 700;
}

[ https://jsfiddle.net/7cw5rz3u/ ]

12
задан Widor 17 April 2012 в 11:59
поделиться

6 ответов

действительно ли возможно рассматривать .js файл как .jsp файл с помощью конфигурации web.xml?

Да:

<servlet>
    <servlet-name>scriptjsp</servlet-name>
    <jsp-file>/script.jsp</jsp-file> 
</servlet>
<servlet-mapping>
    <servlet-name>scriptjsp</servlet-name>
    <url-pattern>/script.js</url-pattern>
</servlet-mapping>

Но, нет никакого фактического преимущества в выполнении этого, потому что файлы JavaScript не должны иметь URL, заканчивающихся в .js ’. То, что определяет, является ли файл файлом JavaScript, - то, какой тип среды MIME им служат. Можно установить это от использования JSP:

<%@ page contentType="text/javascript" %>

наверху. Затем можно связаться непосредственно с:

<script type="text/javascript" src="/script.jsp"></script>

(В стороне: в текущих браузерах сценарии связались с со <сценарий>, тег будет работать даже, не имея Типа контента правильно набор, но это - вероятно, не что-то для доверия.)

Я хочу использовать тег fmt JSTL в JavaScript

Это - вероятно, не хорошая идея. Соглашения о теге fmt с выходом HTML для символов, но что Вы хотите, являются выходом строкового литерала JavaScript, например, к символам кавычки Escape обратной косой черты. JSTL не обеспечивает эту возможность. Вы будете неожиданно оставлены ‘&amp’; символы, обнаруживающиеся в Ваших строках JavaScript и использовании апострофа или двойной кавычки в сообщениях, повредят целый сценарий.

Кроме того, обслуживание обычно включенных сценариев от JSP рискует низкой производительностью и cacheing.

Я предложил бы независимую систему поиска языка в JavaScript. Например, включайте внешний сценарий на язык:

<script type="text/javascript" src="/script/lang/en.js"></script>

(изменяющийся 'en' для соответствия, какой бы ни язык Вы хотите), и в том файле определяют поиск как:

var msg= {
    messageName: 'Message in English',
    ...
};

Затем ищите msg.messageName для каждой локализуемой строки в сценарии.

20
ответ дан 2 December 2019 в 03:54
поделиться

Если Ваш JavaScript 'встроен' с остальной частью Вашей страницы JSP, то просто используют технику, предложенную Kees de Kooter.

Если Ваш JavaScript должен быть во внешнем файле (Для совместного использования через страницы, например) затем просто вставляет его его собственный файл JSP.

<%@page contentType="text/javascript" %>
<fmt:message key="some.message" var="someMessage"/>"
<fmt:message key="another.message" var="anotherMessage"/>"
var someMessage = "${someMessage}"
var anotherMessage = "${anotherMessage}"/>"

И включайте его как это...

        <script src="yourScript.jsp" language="JavaScript" type="text/javascript"></script>

Можно затем обратиться к 'someMessage' и 'anotherMessage' из файла, который включает JSP, или из любого файла JavaScript, который включен после 'yourScript.jsp.

Отметьте использование атрибута contentType - 'текст/JavaScript' препятствует тому, чтобы синтаксический анализатор JSP жаловался, что вывод не хорошо формируется XML - и что tage относится к файлу JSP.

Комбинация этой техники и предложенный @Magner должен принести Вам к разумному решению.

Править: Измененный пример для использования 'текста/JavaScript' insetad 'текста/плоскости' - благодаря @bobince для того, чтобы заставить меня понять эту ошибку (Даже при том, что 'текст/плоскость' работает, это более корректно для использования 'текста/JavaScript'). Кроме того, если количество строк, которые должны интернационализироваться, является небольшим, и/или можно выровнять по ширине наличие 'ресурсов' больше чем в одном месте - один для серверного материала и другого для клиентского материала - метод @bobince использования динамичного включает, хороший.

5
ответ дан 2 December 2019 в 03:54
поделиться

Вы могли сделать следующее. Вы храните переведенное сообщение в переменной, которая может быть разрешена позже в JSP.

<fmt:message key="your.alert" var="theAlert"/>

<script type="text/javascript">
alert("${theAlert}");
</script>
3
ответ дан 2 December 2019 в 03:54
поделиться

Вы не можете использовать теги в JavaScript, но существует обходное решение: Поместите тег в скрытое DIV (<div style="display: none;" id="msg"><fmt:...>

Теперь можно использовать JS для поиска DIV его идентификатором и добираются innerHTML.

Тем не менее fmt является просто оберткой для функций i18n Java, между которыми можно использовать непосредственно <% %>.

1
ответ дан 2 December 2019 в 03:54
поделиться

Необходимо стремиться сохранить код JavaScript в отдельном файле из jsp-кода. Это должно получить кэширование браузера, более легкое обслуживание, повторное использование через страницы, и позволить сжатие.

Я предлагаю, чтобы Вы создали глобальный объект для текста в jsp, чтобы использоваться Вашими файлами JavaScript. Как это:

<script>
    var text = text || {}; // play well with other jsps on the page
    text.this_page_name = {
        required_field_error: "<fmt:message key="required.field.error"/>",
        system_error: "<fmt:message key="system.error"/>"
    };
</script>

Позже Вы используете его в своем JavaScript:

alert(text.this_page_name.required_field_error);
4
ответ дан 2 December 2019 в 03:54
поделиться

Я бы посоветовал вам написать сервлет, который генерирует массив или объект javascript, содержащий всю необходимую вам локализованную информацию. Вы можете использовать пакеты ресурсов Java, которые могут использоваться как клиентской, так и серверной стороной, тогда вам не нужно смешивать код JSP и код Javascript, и ответ сервлета будет кэшироваться браузером.

Создайте сервлет, сопоставьте его с путем, пусть он прочитает языковой стандарт из параметра запроса, затем сгенерирует код Javascript.

Используйте строку вида затем загрузите ваш скрипт

5
ответ дан 2 December 2019 в 03:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: