我正在尝试IntelliJ IDEA 9 30天,我喜欢到目前为止我所看到的。我唯一明显的问题是编辑器似乎不知道如何处理JSP隐式对象方法......
示例1:
<body>
<% out.println("Hello, World!"); %>
</body>
编辑器将此语句中的“println”标记为错误,并说:无法解析方法'println(java.lang.String)'此语法基本可以解决,如果我将它部署到我的应用服务器(Tomcat 7),它的工作正常,但IntelliJ坚持认为“out”对象没有这样的方法。它也不只是“出局”。它无法识别任何隐式对象的方法......
示例2:
<body>
<%
String contextRoot = pageContext.getServletContext().getRealPath("");
.
.
.
%>
</body>
在这种情况下,IntelliJ无法识别getServletContext()方法,但 识别getRealPath()方法。这有多奇怪?
让我感到震惊的是,我已经在网上搜索了IntelliJ 9中提到的这个问题,并且我想出了zilch。这表明我可能已经用我的设置做了一些奇怪的事情,但我无法想象。就像我上面所说的那样,如果我构建和部署,它的工作正常;让我的JSP页面遍布虚假的红色错误令人恼火。 Kinda首先打败了使用智能IDE的目的。
无论如何,我想我会在专家面前抛出这个,看看你们是否可以对这个问题有所了解。任何见解都将不胜感激!
答案 0 :(得分:18)
out
,pageContext
和jspContext
会出现此问题,因为它们使用JSP api提供的类(而不是servlet API)。
要使用它们(如果您正在使用maven项目),请添加此依赖项:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
如果每个隐式对象(session
,request
等都有问题),你也应该添加servlet api依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
答案 1 :(得分:3)
您必须在每个附近出口(带复选标记) 文件 - &gt;项目结构 - &gt;模块 - &gt;依赖关系 - &gt;加 您打算部署的库。
答案 2 :(得分:3)
如果您在识别会话变量时遇到问题,请在IntelliJ中打开该文件。将以下页面指令放在文件的顶部,会立即使会话变量可用并在IntelliJ编辑器中识别。
<%@ page session="true" language="java" %>
如果您已有页面指令,则只需添加此属性:
session="true"