所以,忍受我今天之前从未使用过JSTL。
我要做的是基本上说如果URL =“www.website.com/urlone”,则显示特定的HTML代码块。否则,显示常规代码。
我是在正确的轨道上吗?
<c:choose>
<c:when test="${param.enter=='1'}">
DISPLAY ALTERNATE LOGO
</c:when>
<c:otherwise>
DISPLAY MAIN LOGO
</c:otherwise>
显然,我只是不确定在'test'字段中使用什么函数。
答案 0 :(得分:1)
因此,您希望从HTTP请求URL中提取信息。在EL中,HttpServletRequest
实例可由${pageContext.request}
获得。这个类反过来有几种可能有用的方法,例如getContextPath()
,getRequestURI()
甚至getRequestURL()
。
鉴于在http://www.website.com/urlone
上打开的页面,如果上下文路径是root,则不清楚。如果不是,并且将webapp部署到/urlone
的上下文路径,那么您可以使用以下检查:
<c:when test="${pageContext.request.contextPath eq '/urlone'}">
DISPLAY ALTERNATE LOGO
</c:when>
或者如果它实际部署到root,并且/urlone
因此实际上代表了URI(匹配您的servlet或JSP),那么这样做:
<c:when test="${pageContext.request.requestURI eq '/urlone'}">
DISPLAY ALTERNATE LOGO
</c:when>
如果资源确实由servlet提供,那么如果URL可以包含您想要忽略的/urlone/foo/bar
等路径参数,那么getServletPath()
也是可能的(即您将servlet映射到/urlone/*
而不是/urlone
)的URL模式。
<c:when test="${pageContext.request.servletPath eq '/urlone'}">
DISPLAY ALTERNATE LOGO
</c:when>
或者,如果你更喜欢检查整个网址,这对于方案来说并不是真正的维护,网域和端口完全不受webapp的控制,但是唉:
<c:when test="${pageContext.request.requestURL eq 'http://www.website.com/urlone'}">
DISPLAY ALTERNATE LOGO
</c:when>