小编典典

是否有与之等效的JSTL EL(表达语言)

jsp

我们使用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>

谢谢。


阅读 283

收藏
2020-06-08

共1个答案

小编典典

我最终想出的解决方案是使用自定义标签解决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解决方案在某些情况下会更干净一些,但是如果您想增加对其他参数或属性的支持,则可能需要使用标签。

2020-06-08