我们使用tomcat urlrewrite插件重写入站URL和入站URL。为此,您需要使用JSTL标记。
这对于干净的url和i18n很有用,但是会产生难看的代码,包括tags-in-tags这样的代码:
<link href='<c:url value="/content/bootstrap/css/bootstrap.css" />' rel="stylesheet" />
要么:
<a href='<c:url value="/nextPage.jsp"/>' />Next Page</a>
一种替代方法是使用变量,如下所示:
<c:url value="/nextPage.jsp" var="nextPageUrl"/> <a href='${nextPageUrl}' />Next Page</a>
这确实很干净,但是很冗长。
有表达语言的友好方式吗?
我有点希望像这样:
<a href='${url "/nextPage.jsp}' />Next Page</a>
谢谢。
我最终想出的解决方案是使用自定义标签解决CSS和JS的问题。当然,类似的解决方案也可以应用于标签,尽管我还没有必要。
<my:csslink url="/css/custom.css" /> <my:script url="/script/myscript.js" />
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' />
不要忘记将标签导入到您的jsp中:
<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
定制EL解决方案在某些情况下会更干净一些,但是如果您想增加对其他参数或属性的支持,则可能需要使用标签。