加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java-使用相同的请求映射重载spring控制器方法

发布时间:2020-12-15 01:20:05 所属栏目:大数据 来源:网络整理
导读:我有一个session属性:user,我有一个URL,既要由登录用户查看,又要由未以用户身份登录的用户公开查看. 所以我要做的是: @Controller("myController")@SessionAttributes({"user"})public class MyController {@RequestMapping(value = "/MyPage/{id}",method

我有一个session属性:user,我有一个URL,既要由登录用户查看,又要由未以用户身份登录的用户公开查看.

所以我要做的是:

@Controller("myController")
@SessionAttributes({"user"})
public class MyController {

@RequestMapping(value = "/MyPage/{id}",method = RequestMethod.GET)
public ModelAndView getPage(@PathVariable Integer id) {
   return modelandview1;
}

@RequestMapping(value = "/MyPage/{id}",method = RequestMethod.GET)
public ModelAndView getPage(@PathVariable Integer id,@ModelAttribute User user){
  return modelandview2;
}

但是,我感到它无法正常工作.建议非常欢迎.

最佳答案
我认为@SessionAttributes不是正确的情况.此批注通常用于保留表单支持对象的原始实例,以避免通过隐藏的表单字段传递其状态的无关部分.

您的sceanrio完全不同,因此最好显式使用HttpSession:

@RequestMapping(value = "/MyPage/{id}",HttpSession session) {
    User user = (User) session.getAttribute(...);
    if (user != null) {
        ...
    } else {
        ...
    }
}

还要注意@ModelAttribute是数据绑定的主体-用户可以通过传递请求参数来更改其字段.在这种情况下,您绝对不想要它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读