首页 > 解决方案 > Setter 没有按照应有的方式在 SpringBoot 项目中保存变量

问题描述

我想验证用户可以提交到我的 Web 应用程序的最大团队数。在我的SubmitService我有 2 种方法可以对我的int counting变量进行操作

public void increment (@ModelAttribute Submit submit) {
        submit.setCounting(submit.getCounting() +1);
     }

    public void decrement (@ModelAttribute Submit submit) {
        submit.setCounting(submit.getCounting()-1);
    }

Submit验证最大计数的模型 - 4。

@Entity
public class Submit {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @NotBlank(message = "Please enter your team name")
    private String name;
    private String rank;
    private String email;
    private String leader;

    private Integer score = 0;
    private Integer wins = 0;
    private Integer loses = 0;
    private Integer draws = 0;

    @Max(4)
    private int counting = 0;

    public Submit() {
    }

因此,如果用户执行 Post =counting+1

@PostMapping("/submit")
    public String submitForm (@Valid @ModelAttribute("submit") Submit submit, BindingResult bindingResult, Model model) {

        if (submit.getCounting()>=4) {
            return "submit_max";
        }

        else if (bindingResult.hasErrors()) {
            List<String> rank = Arrays.asList("I", "II", "III", "IV", "V", "VI", "X" );
            model.addAttribute("rank", rank);
            return "submit_form";
        } else {
            submitService.increment(submit);
            submitRepo.save(submit);
            System.out.println(submit.getCounting());
            return "submit_ok";
        }
    }

它正确添加,在 DEBUG 模式下,第一次提交的团队从 0 增加到 1,但是在第二个 Post 中,计数再次从 0 增加到 1,而不是从 1 到 2,因为它应该是......我不明白那里?

标签: javaspringspring-boot

解决方案


推荐阅读