Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么String.equals()方法在JSTL标记<c:if>中不能工作?

为什么String.equals()方法在JSTL标记<c:if>中不能工作?
EN

Stack Overflow用户
提问于 2015-04-05 01:55:25
回答 2查看 1.1K关注 0票数 1

代码的用途:验证来自用户的输入字符串。如果用户输入他的名字,存储为'n',作为"James“,那么消息”已验证!“会显示。(一个单独的HTML表单负责输入字符串)

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>

    <%  String n = (String)request.getParameter("n");
           String t = "James";
    %>

    Message <!-- Default message displayed to show that HTML body is read. -->

    <c:if test="${t.equals(n)}"> 
        <c:out value="Validated!"/>
    </c:if>

</body>

如果我要在花括号内用true替换测试条件,则If条件会通过,并且消息“已验证!”会显示。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-05 02:00:15

  1. 您还没有将变量保存到范围中。

你必须这样做,否则EL不会看到你的变量。

保存变量以请求作用域

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<c:set var="n" value="${param.n}" scope="request"/>
<c:set var="t" value="James" scope="request"/>

您需要使用EL的eq运算符而不是Java的.equals()

更改代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<c:if test="${t eq n}"> 
  <c:out value="Validated!"/>
</c:if>

您的JSP文件包含了一些错误的脚本,而且这种方法是不安全的。

将逻辑和视图分开(如描述的here )会更好。

票数 2
EN

Stack Overflow用户

发布于 2015-04-05 02:07:17

您可以这样使用普通的==比较运算符:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<c:if test="${t == n}"> 
    <c:out value="Validated!"/>
</c:if>

如果需要比较字符串值而不是对象的属性,可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<c:if test="${t == 'Any string can be here'}"> 
    <c:out value="Validated!"/>
</c:if>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29456119

复制
相关文章
为什么在静态方法中不能使用this
在JVM的运行时数据区中有个虚拟机栈(或Java栈),在它的里面是由栈帧'叠加'而成.栈帧由局部变量表,操作数栈,动态连接,方法返回地址等组成.
书唐瑞
2022/06/02
1.9K0
为什么在静态方法中不能使用this
JSTL 和 JSP 中变量互相访问1)<%%>变量在jstl中获取的例子:2)jstl变量在<%%>中获取的例子:
1)<%%>变量在jstl中获取的例子: <% String username="zhangsan"; pageContext.setAttribute("username",username); %> <c:out value="${username}"/> 即:jsp 页面中<%%>中的变量在定义后,需要放置到pageContext属性中,才能被获取(当然也可以放置到request和session、 applicatio中,这要根据实际应用来做决定,一般只是在页面中使用的化,使用
孙亖
2018/06/07
7.2K0
在vue的v-for中,key为什么不能用index?
在前端中,主要涉及的基本上就是 DOM的相关操作 和 JS,我们都知道 DOM 操作是比较耗时的,那么在我们写前端相关代码的时候,如何减少不必要的 DOM 操作便成了前端优化的重要内容。
bb_xiaxia1998
2022/10/01
1.1K0
Python 在 Wiki 标记中添加无
Python编程快速上手实践项目题目,欢迎指证与优化! 代码: #! python3 # bulletPointAdder.py - Adds Wikipedia bullet points to the start # of each line of text on the clipboard. import pyperclip text = pyperclip.paste() # 从剪贴板粘贴文本 lines = text.split('\n') # 使用 split()方法得到一个字符串的列表,以回
py3study
2020/01/09
2.9K0
在 C++ 中标记字符串
theme: channing-cyan highlight: a11y-dark
鲸落c
2022/11/14
5540
在 NLP 中训练 Unigram 标记器
单个标记称为 unigram。Unigram 标记器是一种只需要一个单词来推断单词的词性标记器类型。它有一个单词的上下文。NLTK库为我们提供了UnigramTagger,并从NgramTagger继承而来。
很酷的站长
2023/08/11
3070
在 NLP 中训练 Unigram 标记器
H5中的标记方法
要使用H5标记,必须先进行如下的doctype声明,不区分大小写。Web浏览器通过判断文件开头有没有这个声明,来判断解析器和渲染类型是否切换到对应的H5模式。
week
2018/08/24
9670
在vue的v-for中,key为什么不能用index?4
在前端中,主要涉及的基本上就是 DOM的相关操作 和 JS,我们都知道 DOM 操作是比较耗时的,那么在我们写前端相关代码的时候,如何减少不必要的 DOM 操作便成了前端优化的重要内容。
bb_xiaxia1998
2023/01/06
1.1K0
在ReadWriteLock类中读锁为什么不能升级为写锁?
关于读写锁里面有一个锁升级和降级的问题,也就是写锁可以降级为读锁,但是读锁却不能升级为写锁。那么为什么是这样?
我是攻城师
2018/08/03
3K0
晶振为什么不能放置在PCB边缘?
某行车记录仪,测试的时候要加一个外接适配器,在机器上电运行测试时发现超标,具体频点是84MHz、144MHz、168MHz,需要分析其辐射超标产生的原因,并给出相应的对策,辐射测试数据如下:
AI 电堂
2022/12/08
3730
晶振为什么不能放置在PCB边缘?
为什么 build 方法放在 State 中而不是在 StatefulWidget 中
为什么 build 方法放在 State 中而不是在 StatefulWidget 中呢?其中前2点是源代码的注释中给出的原因,最后一点是我的一点个人理解。
老孟Flutter
2021/01/28
9130
为什么用JSTL(标准标签库)?
马克-to-win:jsp页面当中,经常有一些通用的需求,比如迭代的显示某个范围(比如request)的数据。如果a公司编写一个标签完成这个功能,b公司也编写一个标签也完成这个功能,这势必造成资源的浪费。要是能有一个大公司编写一个标签库,a公司也用它的这个标签儿,b公司也用它的这个标签儿,那多好啊!
马克java社区
2021/07/15
6150
Excel小技巧:在Excel中添加复选标记的15种方法(下)
我们经常会使用复选标记,用来表示任务已完成或测试已通过。在本文中,介绍在Excel工作簿中添加复选标记的15种方法。
fanjy
2022/11/16
1.6K0
Excel小技巧:在Excel中添加复选标记的15种方法(下)
Excel小技巧:在Excel中添加复选标记的15种方法(上)
我们经常会使用复选标记,用来表示任务已完成或测试已通过。在本文中,介绍在Excel工作簿中添加复选标记的15种方法。
fanjy
2022/11/16
3.6K0
Excel小技巧:在Excel中添加复选标记的15种方法(上)
Python 中 Ctrl+C 不能终
python2.x中multiprocessing提供的基于函数进程池,join后陷入内核态,按下ctrl+c不能停止所有的进程并退出。即必须ctrl+z后找到残留的子进程,把它们干掉。先看一段ctrl+c无效的代码:
py3study
2020/01/03
3.2K0
nextline函数_在JAVA中Scanner中的next()和nextLine()为什么不能一起使用?
Java 输入一直是一个坑,本来一直用 Scanner,但一直搞不懂换行符啥的,就用 BufferReader ,但前不久大疆笔试需要持续输入,早忘了 Scanner 怎么写,而那个场景用 Scanner 很好实现 ……
全栈程序员站长
2022/09/05
2.7K0
DataTable的AcceptChange方法为什么不能在Update之前?
本人转载http://www.cnblogs.com/telnet_mike/archive/2011/08/29/2159013.html
跟着阿笨一起玩NET
2018/09/18
1.5K0
抽象方法不能为private,final或者static,为什么
4)抽象方法不能为private,final或者static, native, synchrozied为什么?【新手可忽略不影响继续学习】马克-to-win:抽象方法的最实质的意义在于被未来的子类覆盖实现掉。它自己是个空方法。private的实质意义在于本类其他方法调用它。你自己是个空方法,别人调用你有什么用?所以abstract和private在一起毫无意义。final规定子类不能再覆盖它。abstract是专等着要别人来覆盖,二者矛盾。所以不能放在一起使用。有关static,我们上一章讲过: 马克-to-win:static方法是静态方法,可以直接被类名所调用。而abstract方法是无方法体的方法,直接调用毫无意义,所以矛盾了。顺便说一下,抽象方法也不能为native和synchronized,native说明此方法正在用其他语言(c)编写,此方法是c写的。你java这里却声明说方法是空的,这不符合逻辑。synchronized说明这个方法和另外一个实在做事的方法不能同时执行。而现在你自己却是一个空方法,这也毫无意义。
马克java社区
2021/03/26
4660
抽象方法不能为private,final或者static,为什么
JSP中的JSTL 标签库
JSTL 标签库 全称是指 JSP Standard Tag Library JSP 标准标签库。是一个不断完善的开放源代码的 JSP 标 签库。 EL 表达式主要是为了替换 jsp 中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个 jsp 页面 变得更佳简洁。
愷龍
2022/09/26
2.5K0
JSTL详解_jstl if else
JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的。在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定义标签的开发难度较大和不利于技术标准化产生了自定义标签库。JSTL标签库可分为5类:
全栈程序员站长
2022/09/20
2K0

相似问题

为什么String.Equals不能工作?

12

JSTL选择标记不能正常工作

13

为什么这个String.equals()不能工作?

13

String.equals()不能工作

11

jstl标记<c:forEach不工作

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文