gpt4 book ai didi

java - session 过期时spring 3 mvc SessionAttributes中的默认对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:14 26 4
gpt4 key购买 nike

我认为我对 spring mvc 中的 session 注释有点困惑。

我有这样的代码(示例中有 2 个步骤,第 1 步用户数据,第 2 步地址)

@SessionAttributes({"user", "address"})
public class UserFormController {

@RequestMapping(method = RequestMethod.GET)
public ModelAndView show( ModelAndView mv ){
mv.addObject( new User() );
mv.addObject( new Address() );
mv.setViewName("user_add_page");
return mv;
}

@RequestMapping(method = RequestMethod.POST)
public String processForm( User user, BindingResult result ){
new UserValidator().validate(user, result);
if( result.hasErrors() ){
return "user_add_page";
}else{
return "redirect:/user_form/user_add_address";
}

// .........
}

现在,如果我在 session 过期后提交页面,我会收到错误消息

org.springframework.web.HttpSessionRequiredException: Session attribute 'user' required - not found in session

我该如何处理?我想有 2 个选项

  1. 如果在 session 中丢失我创建空对象并接受提交
  2. 我将一些消息转发回用户表单

我仍处于学习 Spring 的早期阶段,很抱歉,如果它非常明显,我只是看不到它。

附言。这甚至是在 spring mvc 中解决这种形式的好方法,还是您会推荐不同的方法?

最佳答案

1.i create empty objects if missing in session and accept submit

使用@ModelAttribute("user")注解方法提供默认值

2.i forward back to user form with some message

使用@ExceptionHandler(HttpSessionRequiredException.class)注解的方法

关于java - session 过期时spring 3 mvc SessionAttributes中的默认对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2094179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com