我们使用tomcat urlrewrite插件来重写出站URL和入站URL.为此,您需要使用JSTL标记.
这适用于干净的网址和i18n,但它会产生丑陋的代码,包括标签内的标签,如下所示:
<link href='<c:url value="/content/bootstrap/css/bootstrap.css" />' rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)
要么:
<a href='<c:url value="/nextPage.jsp"/>' />Next Page</a>
Run Code Online (Sandbox Code Playgroud)
一种替代方法是使用变量,如下所示:
<c:url value="/nextPage.jsp" var="nextPageUrl"/>
<a href='${nextPageUrl}' />Next Page</a>
Run Code Online (Sandbox Code Playgroud)
这真的很干净,但很冗长.
是否有表达式语言友好的方式来做到这一点?
我有点希望得到类似的东西:
<a href='${url "/nextPage.jsp}' />Next Page</a>
Run Code Online (Sandbox Code Playgroud)
谢谢.
我最终想出的解决方案是使用自定义标签来解决CSS和JS的问题。当然,类似的解决方案也可以应用于标签,尽管我还没有这种需要。
<my:csslink url="/css/custom.css" />
<my:script url="/script/myscript.js" />
Run Code Online (Sandbox Code Playgroud)
CSS 标签看起来像这样,Javascript 标签显然非常相似:
<%@tag language="java" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@attribute name="url" required="true" type="java.lang.String" description="the absolute (to the webapp) path of the css file"%>
<c:url var="encUrl" value='${url}' />
<link href='${encUrl}' rel='stylesheet' />
Run Code Online (Sandbox Code Playgroud)
不要忘记在 jsp 中导入标签:
<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
Run Code Online (Sandbox Code Playgroud)
在某些情况下,自定义 EL 解决方案会更清晰,但如果您想添加对其他参数或属性的支持,标签可能是最佳选择。
| 归档时间: |
|
| 查看次数: |
5982 次 |
| 最近记录: |