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

时间:2017-06-01 02:38:41

标签: html spring post spring-boot thymeleaf

问题

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

来源

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<Tag> 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
<form name="editor" method="post" action="/edit/update"> <fieldset> <input name='name' th:value='${data.name}'/> <input name='tag[0].id'/><input name='tag[0].name'/> </fieldset> </form>


结果

发生了这个问题然后提交表单&#39;编辑&#39;在浏览器上。

  

此应用程序没有/ error的显式映射,因此您将此视为后备   出现意外错误(type = Bad Request,status = 400)。   对象=&#39; shop&#39;验证失败。错误计数:1

1 个答案:

答案 0 :(得分:2)

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

另外,如果按照控制器源的下方,我们可以使用“FORM”而不使用'th:object'。

控制器

    class Splash extends Component {
      static navigationOptions = {
        title: 'Splash', //header:null <= if you want to hide the header
      };
      render() {
        const { navigate } = this.props.navigation;
        return (
          <View>
            <Text>Hello, This is splash</Text>
            <Button
              onPress={() => navigate('Home')}
              title="Go Home"
            />
          </View>
        );
      }
    }