2013-09-25 58 views
0

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

<% 
    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> 
+0

http://stackoverflow.com/questions/1900843/is-there-an-easy-way-to-compare-two-strings-in-a-jsp – GamerJosh

+0

@ Doorknob 5782523 * rd * haha​​;) – jlars62

回答

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>"); 
} 
%> 
4

应该尝试:

<c:if test="${pageName ne 'home.html'}" > 
0

Contary到注释,这样没有问题(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> 

等于被打印。

0

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