0

我有一些用于获取页面名称的代码,并且我想将变量与字符串进行比较 - 但该语句始终返回“true”。

<%
    String uri = request.getRequestURI();
    String pageName = uri.substring(uri.lastIndexOf("/")+1);
%>

<c:if test="${pageName != 'home.html'}" >
<script src="<%= designPath %>/javascripts/constants.js" type="text/javascript"></script>
<script src="<%= designPath %>/javascripts/application.js" type="text/javascript"></script>
<script src="<%= designPath %>/javascripts/cart.js" type="text/javascript"></script>
</c:if>
4

4 回答 4

4

应该试试:

<c:if test="${pageName ne 'home.html'}" >
于 2013-09-25T21:35:17.400 回答
2

如果您已经在使用纯 Java 代码来获取 uri 和页面名称,那么您也可以将纯 Java 代码用于 if 语句。由于您已经违反了神圣不可侵犯的“JSP 中没有 Java 代码”规则。

 <% 
 String uri = request.getRequestURI();
 String pageName = uri.substring(uri.lastIndexOf("/")+1);
 if( !"home.html".equals(pageName) )
 {
    out.print("<script src='" + designPath + "/javascripts/constants.js' type='text/javascript'></script>");
    out.print("<script src='" + designPath + "/javascripts/application.js' type='text/javascript'></script>");
    out.print("<script src='" + designPath + "/javascripts/cart.js' type='text/javascript'></script>");
 }
 %>
于 2013-09-25T21:39:14.667 回答
0

!= 或 ne 都是 JSTL 中的有效比较运算符。只要确保导入带有前缀c的标签库即可。为了理智,您应该回显pageName值。只是为了确保它与“home.html”不同。

于 2013-09-25T21:43:58.623 回答
0

与评论相反,这确实有效(Tomcat 6.0.20)和jstl.jar

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
pageContext.setAttribute("pagename", "test");
%>
pagename = <c:out value="${pagename}" />
<br>
<c:if test="${pagename == 'test'}">
equal
</c:if>

打印相等。

于 2013-09-25T21:40:45.890 回答