gpt4 book ai didi

java - 为什么 String.equals() 方法在 JSTL Core 标签 ? 中不起作用

转载 作者:行者123 更新时间:2023-11-29 05:08:48 25 4
gpt4 key购买 nike

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

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

<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 标签内不起作用?

最佳答案

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

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

将变量保存到请求范围:

<c:set var="n" value="${param.n}" scope="request"/>
<c:set var="t" value="James" scope="request"/>

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

像这样更改您的代码:

<c:if test="${t eq n}"> 
<c:out value="Validated!"/>
</c:if>

附言您的 JSP 文件包含不良做法的 scriptlet,并且该方法不安全。

按照描述将逻辑和 View 分开会更好 here

关于java - 为什么 String.equals() 方法在 JSTL Core 标签 <c :if>? 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29456119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com