私は非常に奇妙な状況があります。私は多くのバグのある非常に大きなJavaアプリケーションに取り組んでいます。私はこれを今日見つけました。セッションatrributeにリストがありません
方法が長すぎるため、コードを投稿せずに状況を説明しようとしていますが、特定の問題を特定して特定しました。ここにあります:
コントローラクラスにセッション属性が設定されています。この属性にはいくつかのフィールド、いくつかのString、いくつかのint、あるオブジェクトタイプのArrayListがあります。それは、次のように設定されている:
request.getSession().setAttribute(Constants.SESSION_LIST_SEARCH, beanList);
は、その後、私は、この属性を読む必要が別のコントローラクラスがあり、それはこのように書きます:コントローラは、適切なキャストを持つ属性を(取得
request.getSession().getAttribute(Constants.SESSION_LIST_SEARCH);
)文字列とintフィールドはありますが、ArrayListは空です。
それはこのように書きますので、私は、「クローン」何が起こったのかを見るためにリストしようとした絶望の行為ではので、私は答えを見つけることができませんでした:この回避策は、トリックを行い
request.getSession().setAttribute(Constants.SESSION_LIST_SEARCH, beanList);
/* Desperate developer */
ArrayList<ActivityBean> duplicatedList = new ArrayList<ActivityBean>();
for(ActivityBean foo:beanList.getActivityBean()){
duplicatedList.add(foo);
}
request.getSession().setAttribute("duplicatedList",duplicatedList);
今(セッションから正しく "duplicatedList"というBeanを読むことはできますが、元のBeanがある時点でArrayListを失っても、他のフィールドは維持されているようには思えません。それは私がそれをから削除されたことを期待null
だった場合 - あなたはそれがnull
が、空ではないことを言ったので、どこか他のアプリケーションでは、いくつかのコードは、(List
を変更しているようだ、事前
はbeanList詳細コードを表示します。 benaListを無効にするか、セッションから取り除くかのどちらかです。 – fmucar
他のいくつかのコードがbeanListと同じオブジェクトへの参照をどこかに持っていて、それがリスト属性を無効にしたり空にしているようです。 – GriffeyDog