は、これはこれは私のモデルクラスです user.java私のコントローラクラスリストデータをスプリングコントローラにバインドするにはどうすればいいですか?
package com.myblog.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import com.myblog.model.User;
@Controller
public class UserController {
private static final Logger log = LoggerFactory.getLogger(UserController.class);
@GetMapping(value="/user")
public String getUser(Model model){
model.addAttribute("user", new User());
return "user";
}
@PostMapping(value="/user")
public String postUser(@ModelAttribute("user") User user){
log.info("user :"+user);
return "user";
}
}
ある
package com.myblog.model;
import java.util.ArrayList;
import java.util.List;
public class User {
private int id;
private String name;
private List<Address> address=new ArrayList<Address>();
@Override
public String toString() {
return "User [name=" + name + ", address=" + address + "]";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Address> getAddress() {
return address;
}
public void setAddress(List<Address> address) {
this.address = address;
}
}
address.java
package com.myblog.model;
public class Address {
private int id;
private String street;
private String city;
public int getAddid() {
return addid;
}
public void setAddid(int addid) {
this.addid = addid;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
これは私のthymeleafのHTMLページ
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Page Title</title>
<link href="/static/css/bootstrap.min.css" rel="stylesheet" media="screen" th:href="@{css/bootstrap.min.css}"/>
<script src="/static/js/bootstrap.min.js" th:src="@{js/bootstrap.min.js}"></script>
</head>
<body>
<div class="container">
<h1> User Account</h1>
<form class="form-horizontal" th:action="@{/user}" method="POST" th:object="${user}">
<div class="form-group">
<label for="inputDescription" class="col-sm-2 control-label">Full Name</label>
<div class="col-sm-5">
<input type="text" class="form-control" name="name" placeholder="Full name"/>
</div>
</div>
<div class="form-group">
<label for="inputDescription" class="col-sm-2 control-label">Address</label>
<div class="col-sm-5">
<input type="text" class="form-control" name="address.city" placeholder="City"/>
</div>
</div>
<div class="form-group">
<label for="inputDescription" class="col-sm-2 control-label">Street</label>
<div class="col-sm-5">
<input type="text" class="form-control" name="address.street" placeholder="street" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<input type="submit" class="btn btn-primary" value="Add"/>
</div>
</div>
</form>
</div>
</body>
</html>
です コントローラーユーザーオブジェクトの
は、データをアドレスモデルオブジェクトにバインドしません。 出力はuser:user [name = "name"、address []]
私がしようとしました:これは –
に動作していない '目= "* {user.address.city}" フィールド' アンスガー番目ありがとう:フィールドには、= "アドレス[0] .street"「私はドン –
作業thymleafの構文を正確に知っていますが、 'th:each =" anAddress:* {address} 'のようなことをすることができ、ループの中で' th:field = "$ {anAddress.street}" 'for例えば、私は完全にはわかりません。 –