【问题标题】:JSTL c:if does not recognize String inside ${} and causes EL syntax errorJSTL c:if 无法识别 ${} 内的字符串并导致 EL 语法错误
【发布时间】:2018-07-10 09:46:33
【问题描述】:

为什么这段代码的“POST”和“submit”部分在我的 IDE 中以不同的颜色突出显示?

这里的语法高亮器也不会用相同的颜色高亮它们。

<c:if test="${"POST".equalsIgnoreCase(pageContext.request.method) && pageContext.request.getParameter("submit") !=null}">

</c:if>

这是否意味着 EL 无法识别该字符串并因此给我一个 EL 语法错误?

我该如何解决这个问题?

【问题讨论】:

  • 我更新了更改。复制代码并粘贴,如果您发现任何错误,请告诉我。

标签: jsp jstl el


【解决方案1】:

&lt;c:if&gt; 内部,您的test 属性也是一个字符串,它用双引号设置,并且您还有"POST" 作为字符串文字,您在字符串内部使用它作为带双引号的字符串。因此编译器将其理解为&lt;c:if test&gt; 条件的结束。实际上,您最终会得到 &lt;c:if test="${"&gt; 而不是预期的。

test 属性内的双引号替换为单引号,如下所示:

<c:if test="${'POST'.equalsIgnoreCase(pageContext.request.method) && pageContext.request.getParameter('submit') != null}">

</c:if>

【讨论】:

    【解决方案2】:

    使用反斜杠字符来转义双引号,如下所示:

    <c:if test="${\"POST\".equalsIgnoreCase(pageContext.request.method)  && pageContext.request.getParameter(\"submit\") !=null}">
    </c:if>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2015-08-24
      • 2016-09-10
      相关资源
      最近更新 更多