Получить объект сеанса из одного метода контроллера в другой - PullRequest
0 голосов
/ 12 сентября 2018

Могу ли я узнать, как получить объект сеанса, который я установил в одном методе контроллера, в другой метод контроллера.

Код:

    public ResponseEntity<String> generateId(@RequestBody IdCreationVO idCreationVO, HttpServletRequest request) throws CareBusinessServiceException {
    log.info("In Controller Method: generateId : "+idCreationVO.toString());

    if(null !=idCreationVO && null == idCreationVO.getIsSupressCommunication()) {
        HttpSession session = request.getSession();
        session.setAttribute(AmhiConstants.COMMUNICATION_SUPPRESSED, idCreationVO.getIsSupressCommunication());
        log.info("session object communication: "+ idCreationVO.getIsSupressCommunication());
    }

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.TEXT_PLAIN);
    return new ResponseEntity(idCreationService.generateId(idCreationVO), headers,
            HttpStatus.OK);
}


public ResponseEntity<String> updateAuthorizationDetails(@RequestBody AuthorizationVO authorizationVO, HttpServletRequest request) throws CareBusinessServiceException {
    String communicationSuppressed = null;
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.TEXT_PLAIN);
    String authNbrResponse  = idCreationService.updateAuthorizationDetails(authorizationVO);
    if(null != request.getSession()) {
     communicationSuppressed = (String) request.getSession().getAttribute(AmhiConstants.COMMUNICATION_SUPPRESSED);
        log.info("communicationSuppressed value: "+ communicationSuppressed);
    }
    /** This method is get triggered from controller as the communication registered functionality get excecuted before updateAuthorizationDetails ends **/
    if (null != authNbrResponse && communicationSuppressed.equals(AmhiConstants.CONSTANT_Y)) {
        String[] authorizationNumber = authNbrResponse.split(":");
        if (authorizationNumber.length > 1) {
            if (authorizationNumber[1].equalsIgnoreCase(AmhiConstants.STATUS_SUCCESS)) {
                idCreationService.triggercommunicationAfterAuthorizationRegistered(authorizationNumber[0]);
            }
        }
    }
    return new ResponseEntity(authNbrResponse, headers,
            HttpStatus.OK);
}

В соответствии с требованием мне нужно, чтобы значение, отправленное в методе generateId, использовалось в методе updateAuthorizationDetails.

Могу ли я знать, что приведенная выше реализация кода отлично работает в сеансе пользователя?

1 Ответ

0 голосов
/ 13 сентября 2018
Методы

session.setAttribute и session.getAttribute должны работать.

Но проблема, похоже, заключается в условии if:

if(null !=idCreationVO && null == idCreationVO.getIsSupressCommunication()) {
        HttpSession session = request.getSession();
        session.setAttribute(AmhiConstants.COMMUNICATION_SUPPRESSED, idCreationVO.getIsSupressCommunication());
        log.info("session object communication: "+ idCreationVO.getIsSupressCommunication());
    }

Он проверяет, является ли idCreationVO.getIsSupressCommunication() nullи затем устанавливает его для сеанса.Другими словами, она устанавливает переменную в сеанс только тогда, когда она null.

Я думаю, вы имеете в виду:

if(null !=idCreationVO && null != idCreationVO.getIsSupressCommunication()) {
        HttpSession session = request.getSession();
        session.setAttribute(AmhiConstants.COMMUNICATION_SUPPRESSED, idCreationVO.getIsSupressCommunication());
        log.info("session object communication: "+ idCreationVO.getIsSupressCommunication());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...