再次关于Spring状态机的问候。 :) 我有一个场景,我必须将对象存储在状态机的扩展状态,并在以后获取它以进行处理。当请求进入SM时,我执行以下操作并将对象置于扩展状态。
SIMAccountInfo simAccountInfo =(SIMAccountInfo) context.getStateMachine().getExtendedState().getVariables().get("acc");
然后我将状态机保存在redis中,稍后当我需要这个对象进行处理时,我得到它如下所示
class Login extends CI_Controller {
public function index() {
$this->lang->load('users');
$this->layout = 'ajax';
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'lang:users_email', 'required|callback_check');
$this->form_validation->set_rules('password', 'lang:users_password', 'required');
if ($this->form_validation->run() == FALSE) {
$this->load->view('login/index');
} else {
$user = $this->db->where('email', $this->input->post('email'))->where('password', md5($this->input->post('password')))->get('users')->row();
$this->session->set_userdata(array(
'email' => $user->email,
'image3' => $user->image3,
'user_id' => $user->user_id,
'username' => $user->username
));
if($user->is_admin == 1)
redirect('admin/dashboard');
else
redirect('member/dashboard');
}
}
public function check() {
$user = $this->db->where('email', $this->input->post('email'))->where('password', md5($this->input->post('password')))->get('users')->row();
if (!$user) {
$this->form_validation->set_message('check', lang('users_invalid_email_or_password'));
return FALSE;
}
else
return TRUE;
}
}
但是我得到了一个类强制转换
java.lang.ClassCastException:com.ctf.sims.dto.xboss.SIMAccountInfo 无法转换为com.ctf.sims.dto.xboss.SIMAccountInfo
你能猜出为什么会这样吗?
答案 0 :(得分:0)
可能与我们使用redis的kryo序列化有关,因为我不记得在扩展状态下添加任何自定义类。
您可能希望为此创建一个新的GH问题,并提供足够的信息来重现它。