从 Java 类在下面的映射中设置值并在请求中设置它。
Map<String,String> responseMap = new LinkedHashMap<String, String>();
responseMap.put("requestId", "test");
request.setAttribute("nomineeResponseMap", responseMap);
现在我尝试从jsp页面获取此请求,但无法从此 map 获取数据。
下面的代码是我在 JSP 页面中使用的。
来自 JSP 页面:
Object responseMap = request.getAttribute("nomineeResponseMap");
if(responseMap instanceof LinkedHashMap) {
Map<String, String> newMap = (LinkedHashMap) responseMap;
System.out.println("yesss");
}
运行程序时遇到以下异常:
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 36 in the jsp file: /form/EDCPRequestSuccess.jsp
Generated servlet error:
The type Map is not generic; it cannot be parameterized with arguments <String, String>
An error occurred at line: 36 in the jsp file: /form/EDCPRequestSuccess.jsp
Generated servlet error:
Syntax error, parameterized types are only available if source level is 5.0
为什么我会遇到上述异常?
最佳答案
如果您的服务器正在使用 JDK 1.5 或更高版本运行。该问题是由错误的 JSP 编译器设置引起的。
对于 Tomcat 服务器,可以在 $TOMCAT_HOME/conf/web.xml
中找到该设置。如果 compilerSourceVM
和 compilerTargetVM
设置为 1.4 或更低版本,则会引发该错误。
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>compilerSourceVM</param-name>
<param-value>1.4</param-value>
</init-param>
<init-param>
<param-name>compilerTargetVM</param-name>
<param-value>1.4</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
关于java - 获取 jasper 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38408671/