Обработка сессий в Spring MVC 3.0 - PullRequest
1 голос
/ 29 ноября 2011

Я использую session.setAttribute для хранения объекта пользователя после входа в систему.В следующем контроллере у меня есть @SessionAttribute для того же пользователя и @ModelAttribute для того же объекта, который будет использоваться в методе, сопоставленном с RequestMapping.После входа в систему, если я нажимаю любую ссылку на домашней странице пользователя, она выдает

HttpSessionRequiredException: атрибут сеанса '' обязателен - не найден в сеансе

Я не уверен, что яя делаю неправильноЯ прочитал много статей и вопросов на этом сайте, но не смог найти никакого решения.Пользовательский объект, который я храню в сеансе, хранит данные учетной записи пользователя, которые требуются во всем контроллере для получения различной информации из БД.Я использую SessionAttribute неправильно, если я использую HttpSession вместо этого во всех контроллерах и получаю объект из сеанса вручную или есть правильный способ обработки весной 3.0.Обратите внимание, что этот пользовательский объект не поддерживает какую-либо форму, просто входит в систему, но содержит много других деталей.

Как помощь будет хорошей.

1 Ответ

0 голосов
/ 29 ноября 2011

Посмотрите на мое (не идеальное) использование данных сеанса:

@Controller
@SessionAttributes("sharedData")
public class RegistrationFormController {

    @Autowired
    private SharedData sharedData; // bean with scope="session"

    @RequestMapping(value = {"/registrationForm"}, method = RequestMethod.GET)
    public ModelAndView newForm() {
        final ModelAndView modelAndView = new ModelAndView("registrationForm");

        modelAndView.addObject("registrationForm", new RegistrationForm());
        // I want to render some data from this object in JSP:
        modelAndView.addObject("sharedData", sharedData);

        return modelAndView;
    }

    @RequestMapping(value = {"/registrationForm"}, method = RequestMethod.POST)
    public String onRegistrationFormSubmitted(HttpServletRequest request,
                @ModelAttribute("registrationForm") RegistrationForm registrationForm, BindingResult result) {
        if (result.hasErrors()) {
            return "registrationForm";
        }

        // Perform business logic, e.g. persist registration data

        return "formSubmitted";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...