2016-07-16 93 views
0

從Java類設置下圖中的值並將其設置爲請求範圍內的值。獲取碧玉異常

Map<String,String> responseMap = new LinkedHashMap<String, String>(); 
responseMap.put("requestId", "test"); 
request.setAttribute("nomineeResponseMap", responseMap); 

現在我試圖從jsp頁面獲取此請求,但無法從此映射獲取數據。

下面我在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 

爲什麼我收到上面的異常?

回答

1

如果您的服務器使用JDK 1.5或更高版本上運行。該問題是由錯誤的JSP編譯器設置引起的。
對於Tomcat服務器,可以在$TOMCAT_HOME/conf/web.xml中找到該設置。如果compilerSourceVMcompilerTargetVM設置爲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> 
+0

我使用的是jboss 4.0服務器。那麼我將在JBoss中設置這個屬性? –

+1

下載JBoss 4.0.5並做了一些測試之後,我對JBoss並不熟悉。修改'$ JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml'對我很有用。還有一個文件'$ JBOSS_HOME/server/all/deploy/jbossweb-tomcat55.sar/conf/web.xml'具有相同的內容。如果第一個不起作用,您也可以修改這個。 –

0

請檢查您的JFK的版本,我認爲你正在使用低於JDK1.5