Еще раз я пришел с вопросом о s2, я новичок в этом и получил некоторые проблемы с поиском примеров.
Я создаю сервис меню, который зависит от логина, который выдается при входе пользователя на стартовую страницу. После входа в систему я сохраняю объект пользователя в сеансе, выполняя следующие действия:
@Override
public String intercept(ActionInvocation invocation) throws Exception {
....
// verifica se o parametro do CPF veio no get e tenta logar o usuario
if (!StringUtils.isBlank(request.getParameter(USER_CPF_REQUEST))) {
if ( doLogin(request, session) ) {
return Action.SUCCESS;
}
, а затем метод doLogin
Usuario usuario = getServico().buscar( Long.valueOf(cpf) );
//Caso o usuário exista, guarda na session
if (usuario != null){
session.setAttribute(USER_HANDLE, usuario);
return true;
}
Теперь возникает проблема, у меня есть MenuBean, введенный в MenuAction следующей XML-частью в ApplicationContext.xml
<bean id="menuAction" scope="prototype" class="br.com.autenticis.renacon.actions.MenuAction">
<constructor-arg ref="menuService" />
</bean>
И действие меню объявлено следующим образом:
public class MenuAction extends ActionSupport implements Preparable, SessionAware
Для этого мне нужно реализовать набор сеансов с закрытым членом
....
приватная карта сеанса;
....
@Override
public void setSession (Map session) {
this.session = сессия;
}
Неудачная часть всего этого метода ниже, объект сеанса является нулевым при отладке:
public String execute() {
if ( session.containsKey( LoginInterceptor.USER_HANDLE) ){
Usuario u = (Usuario) session.get( LoginInterceptor.USER_HANDLE);
setMenu( servico.getMenuPerfil( u.getPerfil() ) );
return Action.SUCCESS;
}
return input();
}
Кто-нибудь знает почему? или как это реализовать? Глядя на код выше, мне нужно «Perfil» от пользователя, который вошел в систему, если сеанс содержит ключ к пользовательскому объекту, я его получаю, а затем использую perfil, чтобы заполнить меню через установщик и вернуть SUCESS, иначе Я верну INPUT, который приведет к экрану входа в систему.
Заранее спасибо.