我使用以下形式发送值:
<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中的值:
@PostMapping
public String mainPost(@ModelAttribute DBFont DBfont)
{
return "redirect:/user-fonts";
}
为什么namefont获得ID值?和Id = null? 是否可以发送所有类值?nameFont和ID?
为什么除了id之外,我到处都为空?
答案 0 :(得分:1)
确保您没有在WebDataBinder中阻止任何属性。
@InitBinder
void initBinder(final WebDataBinder binder) {
binder.setAllowedFields("name", ...);
}
此方法对允许绑定的字段设置限制。并且所有其他字段都是未绑定的,自然会产生null
值。
另一个可能的原因:使用@ModelAttribute注释的Bean中的设置器不正确。例如,用Object setName(String name)
代替void setName(String)
。