【问题标题】:${form.test} prints "var", but ${form.test== 'var'} is always false${form.test} 打印“var”,但 ${form.test== 'var'} 始终为 false
【发布时间】:2011-08-24 19:32:25
【问题描述】:

当我尝试在 JSP 中打印一个值时,它正在打印名为 "var" 的值,但是当我尝试在 if 条件中使用相同的值时,它似乎不是在职的。请有人帮助我...:(:(

<c:out value="${form.test}" /> /* for printing and it's printing "var"*/
<c:if test="${form.test== 'var'}"> /* for if condition which is not working */

【问题讨论】:

    标签: jsp jstl el


    【解决方案1】:

    它应该可以正常工作,假设这些双引号不是值的一部分(即您看到的是var,而不是"var")。也许值周围有一些悬空的空白?

    您可以通过以下方式调试其中一种和其他:

    <pre>|<c:out value="${form.test}" />|</pre> <!-- Should print |var| -->
    

    <c:out value="${fn:length(form.test)}" /> <!-- Should print 3 -->
    

    如果确实是空格并且您无法在 servlet/SQL 端对其进行修剪,请考虑使用fn:trim()

    <c:if test="${fn:trim(form.test) == 'var'}">
    

    JSTL functions 标签库可以通过以下标签库声明获得:

    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    

    【讨论】:

    • 您需要更具体地了解具体问题才能为您提供帮助。它打印什么?长度说明了什么?对于调试问题,您是否理解我试图解释的内容?
    • cOut 工作正常,无论打印什么,我在 cIf 中给出相同的值,但它不起作用:(
    • 那么${form.test} 不会返回String 的实例。
    【解决方案2】:

    试试:

    <c:if test="${form.test eq 'var'}">
    

    【讨论】:

    • 你能详细解释一下为什么这会有所作为吗? &lt;&gt; 不能在 JSPX 中使用,因为它是预定义的 XML 实体,您是否对此感到困惑?无论视图技术如何,==eq 应该都能正常工作。
    • 我不知道为什么会这样。当我试图打印它的工作,但是当我试图在 if 语句中给出相同的值时它不起作用,这有点奇怪,但这就是发生的事情:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2013-08-20
    • 1970-01-01
    相关资源
    最近更新 更多