【问题标题】:Can't compare two Strings in a JSP file无法比较 JSP 文件中的两个字符串
【发布时间】:2016-06-09 12:38:19
【问题描述】:

我有这个 Jsp 文件

<SELECT name="brandsFrom" onchange="as()">
    <c:forEach items="${brandsSelectedList}" var="brands">
        <c:if test="${brands.name == nam}">
        <option value="${brands.id}">${brands.id}</option>
        </c:if>
    </c:forEach>
</SELECT>

我已经在这段代码上方声明了 nam,比如

<%!
String nam;
%>
<%
nam=request.getParameter("name"); 
out.println("value in the string ="+nam+"+");
%>

当我使用时

<c:if test="${brands.name == nam}">

代码不会朗姆酒,而当我使用这样的东西时

<c:if test="${brands.name == 'Denim'}">

代码运行。为什么我不能使用 nam 变量??

【问题讨论】:

  • 支票在我看来是正确的。您确定变量的值是您所期望的吗?
  • 你有没有从out.println("value in the string ="+nam+"+");得到一些输出?
  • 试过&lt;c:if test="${brands.name eq nam}"&gt; ?
  • 你不需要使用 nam。你可以使用 如果你坚持使用nam,那么你应该了解脚本变量和作用域变量的区别。
  • 感谢@rickz 您的解决方案有效,但我仍然想知道为什么之前的解决方案无效。我尝试阅读 jsp 文件中变量的范围,但无法弄清楚它不起作用的原因

标签: java jquery ajax jsp


【解决方案1】:

这可能是因为brands.name 来自brandSelectedList,它将在您的ActionSerlvet 覆盖方法中设置,而nam 是在JSP 中定义的局部变量。在 jsp 中定义的变量可能无法在您的表达式语言代码中访问。 我没试过,但是通过 JSP 的反编译器查看相应的生成类文件,看看那里发生了什么

【讨论】:

    猜你喜欢
    • 2015-11-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多