運行 spring boot 專案時,主頁出現錯誤Invalid property 'district' of bean class。我知道為什么會出現這個錯誤,因為district它是子物體的屬性,我可以從Home()控制器中的方法傳遞父物體。我可以在方法中傳遞Person模型中的物體。Home()但是屬性來自我正在使用關系映射district的物體。cityAddressOneToOne
我的問題如下:
- 我們可以
th:object在百里香中將兩個物體放在一起嗎 - 我們可以使用從控制器發送
Address和Person物體一起查看嗎Model
堆疊跟蹤:
原因:org.springframework.beans.NotReadablePropertyException:bean 類 [com.rest.RestApiPojo.Entity.Person] 的無效屬性“區”:bean 屬性“區”不可讀或具有無效的 getter 方法:回傳型別是否getter 的引數型別是否匹配 setter 的引數型別?
下面是我的代碼:
物體
@Entity
@Table(name = "person_master")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long p_id;
private String name;
private String surname;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Address address;
// getter setter
}
@Entity
@Table(name = "address_master")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long a_id;
private String district;
private String city;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "address")
@JoinColumn(name = "p_id")
private Person person;
// getter setter
}
服務
@Override
public Person addPersonAddress(Person person) {
return personRepo.save(person);
}
控制器
@RequestMapping(value = "/", method = RequestMethod.GET)
public String Home(Model mdl)
{
mdl.addAttribute("persons", new Person());
return "register";
}
@RequestMapping(value = "/personaddress", method = RequestMethod.POST)
public String addPersonAddress(Model mdl, @ModelAttribute("person") Person person, HttpServletRequest req)
{
Address address = person.getAddress(); // get reference of person from parent table and store in child table
address.setDistrict(req.getParameter("district"));
address.setCity(req.getParameter("city"));
address.setPerson(person);
pojoService.addPersonAddress(person);
return "listofperson";
}
百里香葉
<form th:action="@{/personaddress}" th:object="${persons}" method="post">
<div class="container">
<h1 style="text-align: center">Add Person</h1>
<div class="row">
<div class="col-sm-12">
<div class="mb-3">
<label for="exampleFormControlInput1" class="form-label">Person name</label>
<input type="text" class="form-control" name="name" th:field="*{name}">
</div>
<div class="mb-3">
<label for="exampleFormControlInput1" class="form-label">Person surname</label>
<input type="text" class="form-control" name="surname" th:field="*{surname}">
</div>
<div class="mb-3">
<label for="exampleFormControlInput1" class="form-label">District</label>
<input type="text" class="form-control" name="district" th:field="*{district}">
</div>
<div class="mb-3">
<label for="exampleFormControlInput1" class="form-label">City</label>
<input type="text" class="form-control" name="city" th:field="*{city}">
</div>
<input class="btn btn-primary" type="submit" value="Submit">
</div>
</div>
</div>
</form>
uj5u.com熱心網友回復:
兩個物體不是必需的,因為它們已經在 person 類中映射,只需撰寫address.district并address.city在 thymeleaf 中,你會得到它
uj5u.com熱心網友回復:
這是關于樣板代碼。您可以將 @Data 添加到來自 Lombok 庫的類中。
如果你不使用 lombok 添加 setter 和 getter
public String getDistrict() {
return district;
}
public void setDistrict(String district) {
this.district= district;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/422451.html
標籤:
