如何在Spring中创建数据更改表单

时间:2017-02-15 13:06:04

标签: java spring forms spring-mvc

我正在尝试为用户创建一个表单,在我的Web应用程序中更改它自己的私有数据(地址,年龄......):

  • 观点:

    public class UserDetailsView {
    
        private Long userId;
        private String name;
        ...
    }
    

    在表单页面的@GetMapping中,我将所有用户数据加载到表单视图,然后将加载的视图发送到Thymeleaf并创建最终的HTML,所有这些进程都正常工作。

  • 我的问题是:

由于显而易见的原因,表单没有userId变量的字段,我不想为ID创建隐藏字段,以避免可以轻易改变{{1}的恶意用户} field。

  • 我的问题是:

如何在服务器端保留相同的userId实例以保留UserDetailsView变量内容,只需更改与表单中字段相关的变量? Actualy我的解决方案是在数据库中搜索已登录用户获取它的ID,然后更新UserDetails表。

2 个答案:

答案 0 :(得分:0)

如果用户只能更改与自己相关的数据,只需在会话中保留userId(以及可能需要在整个应用程序中使用的其他用户详细信息)。

答案 1 :(得分:0)

首先,如果您尝试提交表单,则应使用POST方法  @GetMapping是一个组合注释,充当@RequestMapping(method = RequestMethod.GET)

的快捷方式

您应该在控制器方法上使用的内容类似于

@RequestMapping(value = "/update", method = RequestMethod.POST)

其次,尝试更新其详细信息的用户应该已经登录并进行了身份验证。它不应该来自形式。这是一个如何使用spring security

获取登录用户的示例

How to get the current logged in user object from spring security?