首页 文章

(Spring,Thymeleaf)如何向模型中的模型列表请求控制器'POST'?

提问于
浏览
1

问题

我试过以下来源 . 但发生了错误'Validation failed for object' .
由此链接引用(http://bitbybitblog.com/forms-and-data-models-in-spring-mvc/) .
我想如何形成数据(输入值)发送到控制器的模型'Shop'没有任何错误 .
我认为无与伦比的模型'Shop'和HTML表单数据 . 无法弄清楚解决方案 .
如何修复'tag'输入名称?

来源

public class Tag {
    private Long id;
    private String name;
    private Date regDate = new Date();
}
public class Shop {
    private Long id;
    private String name;
    private String url;
    private String featureImagePath;
    private List&ltTag> tag = new ArrayList<>();
    private ShopStatus status = ShopStatus.SHOW;
    private Date expireDate;
    private Date updateDate;
    private Date regDate;
}
Controller 
@RequestMapping(value = "/edit/update", method = RequestMethod.POST)
public String update(@ModelAttribute Shop shop) {
    if (shop.getId() == null) {
        shopService.createShop(shop);
    }

    return "redirect:/";
}
HTML/Thymeleaf 
&ltform name="editor" method="post" action="/edit/update">
&ltfieldset>
    &ltinput name='name' th:value='${data.name}'/>
    &ltinput name='tag[0].id'/>&ltinput name='tag[0].name'/>
</fieldset>
</form>

结果

发生此问题然后在浏览器上提交表单“编辑器” .

此应用程序没有/ error的显式映射,因此您将此视为回退 . 出现意外错误(type = Bad Request,status = 400) . object ='shop'的验证失败 . 错误计数:1

1 回答

  • 1

    我的来源没有问题 . 发生了另一面 .
    实际上HTML方面有'expireDate'输入 . 但是发送到控制器 NULL value 的输入(模型'Shop'没有定义默认值) .
    这是我的错 .

    另外,如果按照控制器源下方的话,我们可以使用没有'th:object'的 "FORM" .


    Controller

    @RequestMapping(value = "/edit", method = RequestMethod.GET)
    public String edit(Model model) {
        model.addAttribute("data", new Shop());
        return "shop/edit";
    }
    
    @RequestMapping(value = "/edit/update", method = RequestMethod.POST)
    public String update(@ModelAttribute Shop shop) {
        if (shop.getId() == null) {
            shopService.createShop(shop);
        }
    
        return "redirect:/";
    }
    

相关问题