0

我的团队已经准备好在 spring 框架中创建一个项目并成功运行。现在我决定让它运行得更快。

现有项目: 我的开发人员尽其所能,使用jsp创建了动态输出的css页面。

现有代码:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <jsp:include page="/WEB-INF/common/layout/head.jsp" />
    < jsp:include page="/WEB-INF/common/css/index.jsp" />
</head>

输出:

<style type="text/css">
    body{background: #ffffff url('<c:url value='/resources/images/logo/logo_small.png'/>') no-repeat scroll center center}
</style>

此代码或项目中没有错误,这工作正常。

我需要的是,我的 css 文件需要通过标题中的链接标签加载。像这样的东西:

<link rel="stylesheet" href="/mysite/resource/css/sitemap/index.css" type="text/css">

这将通过在浏览器中捕获来加速。

我到目前为止所做的: 我创建了一个指向 jsp 的 url。

<c:if test="${branch == 'sitemap'}">
    <c:if test="${page == 'index'}">
        <%@include file="/myfile/dynamic/css/layout/index.jsp" %>
    </c:if>
</c:if>

这段代码可以吗?工作,但有一个问题。我需要替换样式类型的开始标签和结束标签。我通过以下代码导入和替换来做到这一点:

<c:set var="my_css">
    <c:if test="${branch == 'sitemap'}">
        <c:if test="${page == 'index'}">
            <%@include file="/WEB-INF/common/css/index.jsp" %>
        </c:if>
    </c:if>
</c:set>
<c:set var="css" value='${fn:replace(fn:replace(fn:replace(my_css,"<style type=\\\"text/css\\\">", ""),"</style>", ""),"\'", "99999")}'/>
<compress:css enabled="true">
    <c:out value='${css}'/>
</compress:css>

这里99999位置引起了问题。实际上我需要用 & #39; 替换它。

上面的代码工作正常,并用 9999 替换 '。但用 &.. 替换后它不起作用。& 本身再次变为 & amp;

信息: 它是一个已完成的项目。将动态生成更多的 CSS。全部在jsp页面中。好运是每个jsp页面只输出css代码。坏运气是它在顶部和底部包含脚本标签。另一个坏运气是在 url('') 上。

此代码在 fn:replace 标记中解决问题。

或者如果你有更好的建议,请告诉我。

我认为会有一个简单的选择。请让我知道您的建议、建议和帮助。

4

1 回答 1

0

我做到了这一点。

我创建了一个新路由 /resource/css|js ,我使用内部资源视图解析器 - (文件夹)。

我的链接网址类似于/resource/css/qtn/page1.css

在控制器 /resources/{ type }/{ page }.css 中。

在这里,我获取类型页面值,并在我的动态 jsp页面中使用它来实现我的结果。

为了安全起见,我检查了网址是否来自我自己的页面。

暗示 :

在使用内部资源视图解析器时,当您将页面值直接传递给资源 url时,它会抛出错误,因为有时页面 url 将是/page1/block1,因此我们的控制器会抛出错误。

为了解决这个问题,我将页面值作为/resource/css/qtn/page1.css?sub=${page}传递。

在控制器中,我们可以轻松地将这个子值作为模型发送到我们的动态 jsp 。

于 2013-01-16T07:41:28.577 回答