java JSTL:未定义String类型的方法

wn9m85ua  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(216)

我正在通过一本书学习JSP和JSTL,在说的书中他们提到了这个示例代码:
第一个月
但是,该方法似乎无法识别,并给出错误:方法getEqualsIgnoreCase()对于类型String是未定义的,我不明白为什么它试图查找**get**EqualsIgnoreCase()
我使用的是javax.servlet.jsp.jstl-1.2.1.jar和javax.servlet.jsp.jstl-api-1.2.1.jar,因为这本书是这样做的,我假设这可能是一个版本问题。我将感谢任何提示或澄清这件事,我没有找到任何答案,在建议的职位。
这里是简化的jsp文件,我给出了错误:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Login</title>
</head>

<c:set var="errMsg" value="${null}"/>
<c:set var="displayForm" value="${true}"/>

<c:if test="${ 'POST'.equalsIgnoreCase(pageContext.request.method) }">
    
</c:if>

<body>

</body>

</html>
w8f9ii69

w8f9ii691#

欢迎来到stackoverflow,欢迎来到java编程。
问题是<c: JSTL标记使用的EL Expression Language遵循所谓的JavaBean Specification
该规范定义了各种各样的“规则”,说明如何通过.点标记法访问类、对象和方法。
在您的示例中,标记尝试访问类的属性(attribute),因此在方法调用前添加了getXXX()前缀。
要解决此问题,请尝试将代码更改为以下代码:

<c:if test="${ 'POST' eq pageContext.request.method }">

<c:if test="${ 'POST' == pageContext.request.method }">

使用您更容易阅读的版本。

相关问题