-1

IamはherokuでWebアプリケーションを実行しようとしています。JSP-サーブレットアーキテクチャを備えたシンプルなWebアプリケーション。

http://electric-rain-8409.herokuapp.com/client/home?page=Page&name=maginfoINSERT&type=form このURLにアクセスすると、このエラーが発生します

java.lang.ClassCastException:java.util.Collections$UnmodizableMapをjava.util.HashMapにキャストできません

*at org.apache.jsp.client.Page_jsp._jspService(org.apache.jsp.client.Page_jsp:185)
-----
-----
-----
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:288)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:115)
at com.akas.magclub.servlet.UrlForward.doGet(UrlForward.java:34)*

ヒットしようとするサーブレットはUrlForwardであり、パラメータPageで識別されるjspページにリクエストを転送します。

驚くべきことは、次のURLが機能することです http://electric-rain-8409.herokuapp.com/client/home?page=frontpage&tag=

なぜこれが起こっているのか本当に理解できません。Webアプリケーション全体がローカルマシン環境で正常に動作します。

4

1 に答える 1

0

エラーが発生しました。サーブレットがこのリクエストを転送してパラメータマップを取得しようとするJSPページは、次のように実行しようとします。

HashMap <String,String[]> parammap=(HashMap<String,String[]>)request.getParameterMap();

ただし、request.getParameterMap()は、読み取り専用でHashMapがR / Wアクセスを提供するという理由だけで、HashMapにキャストできない変更不可能なコレクションを返します。

だからそれをに変更する

Map<String,String[]> parammap=request.getParameterMap();

問題を解決しました。

しかし、まだ1つ残っています。HashMapを使用した上記のコードは、tomcatで実行するとローカルで正常に機能しますが、herokuで実行すると失敗します。

于 2012-12-06T07:32:30.780 に答える