IntelliJ 9无法识别JSP中的隐式对象方法?

Syn*_*dog 8 jsp intellij-idea

我正在尝试IntelliJ IDEA 9 30天,我喜欢到目前为止我所看到的.我唯一明显的问题是编辑器似乎不知道如何处理JSP隐式对象方法......

例1:

<body>
     <% out.println("Hello, World!"); %>
</body>
Run Code Online (Sandbox Code Playgroud)

编辑器将此语句中的"println"标记为错误并说:无法解析方法'println(java.lang.String)' 这个语法基本上是你可以获得的,如果我将它部署到我的应用服务器(Tomcat 7),但IntelliJ坚持认为"out"对象没有这样的方法.它也不只是"出局".它无法识别任何隐式对象的方法......

例2:

<body>
  <%
    String contextRoot = pageContext.getServletContext().getRealPath("");
    .
    .
    .
  %>
</body>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,IntelliJ无法识别getServletContext()方法,但它确实识别getRealPath()方法.这有多奇怪?

令我感到震惊的是,我已经在网上搜索了IntelliJ 9中提到的这个问题,我想出了zilch.这表明我可能已经用我的设置做了一些奇怪的事情,但我无法想象.就像我上面所说的那样,如果我构建和部署,它的工作正常; 让我的JSP页面遍布虚假的红色错误令人恼火.Kinda首先打败了使用智能IDE的目的.

无论如何,我以为我会在专家面前抛出这个,看看你们是否可以对这个问题有所了解.任何见解将不胜感激!

Col*_*ert 18

你也会有这样的问题out,pageContext而且jspContext因为它们使用提供的JSP API(不是在servlet API)班.

要使用它们(如果您正在使用maven项目)添加此依赖项:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

如果你有每天隐含对象(问题session,request等等),你应该添加Servlet API的依赖太大:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 您是否在项目中添加了应用程序服务器库?在`file` - >`Project structure` - >`Modules` - >`Dependencies` - >`Add`.如果您将tomcat配置为IntelliJ中的应用程序服务器,则可以添加依赖项. (2认同)