2013-05-27 6 views
1

Я использую пользовательские теги для создания какой-либо главной страницы (шаблона). Конструкция следующая:Jstl: использование скриптлета внутри пользовательских тегов

// Template 
<%@ tag description="master" pageEncoding="UTF-8"%> 
<%@ attribute name="js" fragment="true" %> 
<!doctype html> 
<html> 
<head> 
    <jsp:invoke fragment="js" /> 
</head> 
<body> 
</html> 

// Page 
<%@ page pageEncoding="UTF-8"%> 
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %> 
<t:master> 
    <jsp:attribute name="js"> 
     <script type="text/javascript" src="<spring:url value="/javascript/administration/customers.js" />"></script> 
    </jsp:attribute> 
</t:master> 

Он работает отлично, пока я пытаюсь использовать общее решение для отключения на стороне браузера кеширования JavaScript путем добавления случайной строки в конец JS файла:

<script type="text/javascript" src="<spring:url value="/javascript/administration/customers.js" />?<%= new java.util.Date().getTime() %>"></script> 

Она терпит неудачу с

элементы сценариев (<% !, < JSP: декларации, <% =, < jsp: выражение, <%, < jsp: scriptlet) здесь запрещены.

исключение

Как можно реализовать такое решение? Спасибо

+1

Ошибка довольно описательная: в ней говорится, что вы [не используете скрипты] (http://stackoverflow.com/q/3177733/1065197). –

+0

@LuiggiMendoza Спасибо, но я понимаю, что ошибка говорит ... Вопрос был другой – nKognito

+0

Заголовок вопроса не имеет отношения к содержанию вопроса для начала ... –

ответ

3

Дикое предложение :-)

Используйте usebean, чтобы создать новый объект Date в контексте запроса. Затем каждый запрос приведет к созданию нового объекта Date. Это будет использоваться повторно по всему запросу.

<jsp:useBean id="uniqueDate" class="java.util.Date" scope="request"/> 

Затем вызовите метод getTime() объекта даты (как указано в комментарии).

${uniqueDate.time} 
+3

Просто использовать '$ {uniqueDate.time}' проще. – BalusC

+0

Вы, конечно, правы, я обновил свой ответ. Благодаря! – Gunslinger

+0

BalusC означало, что вместо использования '' вы можете использовать '' для поддержания чистого кода JSTL/EL и просто вызвать переменную с помощью '$ {uniqueDate.time}'. –

Смежные вопросы