0

在liferay 7中,我尝试在登录成功后调整用户会话。我曾经为此构建了一个钩子,它曾经工作得很好。但现在我无法检索会话来检查属性。

@Component(immediate = true, property = { "key=login.events.post" }, service = LifecycleAction.class)
public class TestSessionAdjustAction implements LifecycleAction {
@Override

public void processLifecycleEvent(LifecycleEvent lifecycleEvent) throws ActionException {
        final HttpSession session = lifecycleEvent.getSession();
        final TestAccessToken token = (TestAccessToken) session.getAttribute(TestWebkeys.TEST_ACCESS_TOKEN);
        if (token != null) {
            TestSessionUtil.put(token.getRefreshToken(), session);
        }
    }
}

代码在以下位置抛出一个空指针 ex:

session.getAttribute(TestWebkeys.TEST_ACCESS_TOKEN);
4

1 回答 1

0

我四处寻找资金,用

最终的 HttpSession 会话 = 生命周期事件.getRequest().getSession();

解决问题。(我希望这对某人有所帮助..因为,我花了一段时间)

似乎生命周期事件在其类中有几个构造函数,并且在我的方法之前在这里使用的构造函数将会话设置为空......

public class LifecycleEvent {

public LifecycleEvent() {
    this(null, null, null, null);
}

public LifecycleEvent(
    HttpServletRequest request, HttpServletResponse response) {

    this(null, request, response, null);
}

public LifecycleEvent(HttpSession session) {
    this(null, null, null, session);
}

public LifecycleEvent(String[] ids) {
    this(ids, null, null, null);
}

public LifecycleEvent(
    String[] ids, HttpServletRequest request, HttpServletResponse response,
    HttpSession session) {

    _ids = ids;
    _request = request;
    _response = response;
    _session = session;
}

public String[] getIds() {
    return _ids;
}

public HttpServletRequest getRequest() {
    return _request;
}

public HttpServletResponse getResponse() {
    return _response;
}

public HttpSession getSession() {
    return _session;
}

private final String[] _ids;
private final HttpServletRequest _request;
private final HttpServletResponse _response;
private final HttpSession _session;}
于 2016-08-22T19:52:06.180 回答