代码之家  ›  专栏  ›  技术社区  ›  Chris

尝试在jsp模板中使用JSTL进行OR测试

  •  1
  • Chris  · 技术社区  · 14 年前

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    
    <c:set var="contextPath" value="${pageContext.request.contextPath}" />
    <c:set var="requestURI" value="${pageContext.request.requestURI}" />
    <c:set var="isPeople" value="${fn:contains(requestURI, '/People/')}" />
    <c:set var="isJobs"   value="${fn:contains(requestURI, '/Jobs/') || fn:endsWith(requestURI,contextPath+'/')}" />
    

    基本上,isPeople工作正常-它检查用户是否在url中包含“/People/”的任何我的页面上,并稍后使用它显示相应的子菜单。

    现在,如果isJobs位于“/Jobs/*”或应用程序根目录下,我将其设置为true,但我的simple | |无法编译,它会给我以下错误:

    An exception occurred processing JSP page /sitemesh/main.jsp at line 7
    

    1 回复  |  直到 14 年前
        1
  •  1
  •   BalusC    14 年前

    实际上,字符串串联在EL中是不起作用的。

    <c:set var="contextPath" value="${pageContext.request.contextPath}/" />
    <c:set var="requestURI" value="${pageContext.request.requestURI}" />
    <c:set var="isPeople" value="${fn:contains(requestURI, '/People/')}" />
    <c:set var="isJobs"   value="${fn:contains(requestURI, '/Jobs/') || fn:endsWith(requestURI, contextPath)}" />
    

    注意,我从 fn:endsWith <c:set value> .