Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';t String.equals()方法在JSTL核心标记内工作<;c:如果>;?_Java_Html_Jsp_Jstl_El - Fatal编程技术网

Java 为什么';t String.equals()方法在JSTL核心标记内工作<;c:如果>;?

Java 为什么';t String.equals()方法在JSTL核心标记内工作<;c:如果>;?,java,html,jsp,jstl,el,Java,Html,Jsp,Jstl,El,代码的用途:验证用户输入的字符串。如果用户输入其姓名(存储为“n”)为“James”,则显示消息“Validated!”。 (一个单独的HTML表单负责输入字符串) 尽管没有任何错误,但是标记内的测试失败,并且无论输入字符串是否为“James”,都不会显示消息 消息 如果我在花括号内将测试条件替换为true,则If条件通过并显示消息“Validated!” 为什么equals()方法不能在JSTL标记中工作 您没有将变量保存到范围 你必须这样做,让EL看到你的变量 将变量保存到请求范围: 另

代码的用途:验证用户输入的字符串。如果用户输入其姓名(存储为“n”)为“James”,则显示消息“Validated!”。 (一个单独的HTML表单负责输入字符串)

尽管没有任何错误,但是标记内的测试失败,并且无论输入字符串是否为“James”,都不会显示消息


消息
如果我在花括号内将测试条件替换为true,则If条件通过并显示消息“Validated!”

为什么
equals()
方法不能在JSTL标记中工作

  • 您没有将变量保存到范围
  • 你必须这样做,让EL看到你的变量

    将变量保存到请求范围:

    另外,您的JSP文件包含的Scriptlet是一种不好的做法,而且这种方法是不安全的


    您最好按照说明分离逻辑和视图

    您可以通过以下方式使用普通的比较运算符:

    <c:if test="${t == n}"> 
        <c:out value="Validated!"/>
    </c:if>
    
    
    
    如果需要比较字符串值而不是对象的属性,可以执行以下操作:

    <c:if test="${t == 'Any string can be here'}"> 
        <c:out value="Validated!"/>
    </c:if>
    
    
    
    n
    是可变的,而不是字符串:)如果我们需要比较字符串值,而不是它们是否引用相同的对象,您的建议是什么?为了比较两个字符串是否相似,我相信使用Java中的equals()方法,而不是==运算符。据我所知,==运算符比较两个操作数(变量)是否引用同一个对象。我在这方面错了吗?我认为eq转换为==所以我的问题仍然有效。在任何情况下,您能告诉我如何比较标记中的两个字符串是否具有相同的值吗?@user311418如果我没有记错的话,在EL world中,您假设基元类型不存在(即使是bean通常也使用诸如
    Integer
    之类的包装类型,而不是基元
    int
    ,通过使用null来允许未设置状态)所以
    =
    相当于
    eq
    ,表示
    equals
    方法。不过感谢您的链接!在EL中,
    eq
    =
    的工作原理与Java中的
    .equals()
    完全相同-它是比较对象的值,而不是它们对对象的引用。
    <c:if test="${t eq n}"> 
      <c:out value="Validated!"/>
    </c:if>
    
    <c:if test="${t == n}"> 
        <c:out value="Validated!"/>
    </c:if>
    
    <c:if test="${t == 'Any string can be here'}"> 
        <c:out value="Validated!"/>
    </c:if>