我面临的情况是,如果我在会话中存储了一个表单,在进行新的战争部署并尝试访问该表单后,我会得到一个 java.lang.ClassCastException。
为了使这对用户透明,我编写了以下代码:
try {
command = (ReservationOfBooksCommand) request.getPortletSession().getAttribute(RESERVATION_OF_BOOKS_COMMAND_SESSION_NAME);
} catch (ClassCastException e) {
request.getPortletSession().removeAttribute(RESERVATION_OF_BOOKS_COMMAND_SESSION_NAME);
}
但不确定是否有更优雅的选择,因为我不喜欢捕获 RuntimeExceptions 并且不想在每次部署新战争时重新启动服务器。
谢谢。