Jstl:在自定义标记中使用scriptlet

时间:2013-05-27 18:02:48

标签: java javascript jsp 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>

它正常工作,直到我尝试使用通用解决方案通过在js文件名的末尾添加随机字符串来禁用浏览器端缓存javascript:

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

失败了

  

脚本元素(&lt;%!,&lt; jsp:declaration,&lt;%=,   此处不允许使用&lt; jsp:expression,&lt;%,&lt; jsp:scriptlet。

例外

我该如何实施这样的解决方案?谢谢

1 个答案:

答案 0 :(得分:3)

一个疯狂的建议: - )

使用usebean在请求范围中生成新的Date对象。然后,每个请求都将导致创建一个新的Date对象。这将在整个请求中重复使用。

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

然后在日期对象上调用getTime()方法(如注释中所示)。

${uniqueDate.time}