@ModelAttribute返回不正确的值

时间:2018-11-20 14:21:10

标签: java spring-boot

我使用以下形式发送值:

<form action="user-fonts" method="post" ">
<select name="nameFont">
<#list fonts as font>
<option value=${font.id}>${font.nameFont}</option>
</#list>
</select>
    <input type="hidden" name="_csrf" value="${_csrf.token}" />
    <div><input type="submit" value="Go"/></div>
</form>

控制器:

 @GetMapping
    public String main(@AuthenticationPrincipal User user, Model model)
    {
       Set<DBFont> fonts = user.getFont();
        model.addAttribute("fonts", fonts);
        return "Myfonts";
    }

以下是GetMapping中的值:

enter image description here

    @PostMapping
    public String mainPost(@ModelAttribute DBFont DBfont)
    {

         return "redirect:/user-fonts";
    }

为什么namefont获得ID值?和Id = null? 是否可以发送所有类值?nameFont和ID?

enter image description here

为什么除了id之外,我到处都为空?

1 个答案:

答案 0 :(得分:1)

确保您没有在WebDataBinder中阻止任何属性。

@InitBinder
void initBinder(final WebDataBinder binder) {
    binder.setAllowedFields("name", ...);
}

此方法对允许绑定的字段设置限制。并且所有其他字段都是未绑定的,自然会产生null值。

另一个可能的原因:使用@ModelAttribute注释的Bean中的设置器不正确。例如,用Object setName(String name)代替void setName(String)