2012-01-25 45 views
0

我有短代码:JSTL - 选择/时

<c:choose> 
<c:when test="${logging==1}"> 
    write 1 
</c:when> 
<c:otherwise> 
    write 2 
</c:otherwise> 

</c:choose> 

的问题是,这个代码不起作用。如果日志记录为1或0,则代码显示我'写入2'文本。

出了什么问题?日志记录INT

后你的答案a've改变了我的代码:

<c:choose> 
<c:when test="${logging eq 'added'}"> 
    write 1 
</c:when> 
<c:otherwise> 
    write 2 
</c:otherwise> 

</c:choose> 

现在,我的 '日志'是一个字符串。这是显示 '添加' 和$ {登录[ '类']}显示 '类java.lang.String',但它仍然写'写2'

我也有<%@标签库URI = “http://java.sun.com/jsp/jstl/core” PREFIX = “C” %>声明

的web.xml是:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
+0

“日志记录”与会话或请求绑定吗? – adatapost

+0

您使用的是什么servletcontainer? – BalusC

回答

0

我不是100%确定“$ {logging == 1}”语法是否正确。

我已经看到过例如在这种类型的代码之前的“$ {logging eq 1}”语法。

另外 - 是否正确定义了变量日志definiitly?

如果可能,你可以显示其余的代码吗?

+2

$ {logging == 1}是正确的。我甚至比$ {logging eq 1}更喜欢这个,因为它对我来说更具可读性。 –

1

如果该值根本不是int,则会发生这种情况,但例如String。对于字符串,您需要引用比较值:

<c:choose> 
    <c:when test="${logging == '1'}"> 
     write 1 
    </c:when> 
    <c:otherwise> 
     write 2 
    </c:otherwise> 
</c:choose> 

另一个可能的原因是EL没有被评估。如果你的web.xml根声明是错误的,那反过来会发生。有关正确的声明示例,另请参阅our JSTL wiki page的底部。