[英][Failed to convert property value of type 'java.lang.String[]' to required type 'java.util.List' for property
[英]Failed to convert property value of type 'java.lang.String' to required type 'java.util.List' for property 'transactions'
我正在使用 thymeleaf 并在将数据从字符串转换为列表时遇到一些错误。 在这里我附上了我的代码
我的实体类:
@Entity
@Table(name="customer")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "first_name")
@NotNull(message = "First Name cannot be empty")
@Size(min = 1, message = "First Name cannot be empty")
private String firstName;
@Column(name = "last_name")
@NotNull(message = "Last Name cannot be empty")
@Size(min = 1, message = "Last Name cannot be empty")
private String lastName;
@Column(name = "email")
@NotNull(message = "Email ID cannot be empty")
@Pattern(regexp = "^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+$",
message = "Enter valid mail id")
private String email;
@Column(name = "branch")
@NotNull(message = "Branch name cannot be empty")
private String branch;
@Column(name = "balance")
private double balance;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "customer_id")
private List<Transaction> transactions;
public Customer(String firstName, String lastName, String email, String branch, double balance) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.branch = branch;
this.balance = balance;
}
public Customer() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getBranch() {
return branch;
}
public void setBranch(String branch) {
this.branch = branch;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public List<Transaction> getTransactions() {
return transactions;
}
public void setTransactions(List<Transaction> transactions) {
this.transactions = transactions;
}
public void addTransaction(Transaction transaction){
if(transaction == null) {
transactions = new ArrayList<>();
}
transactions.add(transaction);
}
@Override
public String toString() {
return "Customer{" +
"id=" + id +
", firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", email='" + email + '\'' +
", branch='" + branch + '\'' +
", balance=" + balance +
'}';
}
@Entity
@Table(name = "transactions")
public class Transaction {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "transaction")
private double amount;
public Transaction() {
}
public Transaction(double amount) {
this.amount = amount;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
@Override
public String toString() {
return "Transaction{" +
"id=" + id +
", amount=" + amount +
'}';
}
html格式:
<h3>Customer Directory</h3>
<hr>
<p class="h4 mb-4">Save Customer</p>
<form action="#" th:action="@{/customers/saveCustomer}"
th:object="${customer}" method="POST">
<!-- Add hidden form field to handle the update -->
<input type="hidden" th:field="*{id}" />
<input type="text" th:field="*{firstName}"
class="form-control mb-4 col-4" placeholder="First Name">
<input type="text" th:field="*{lastName}"
class="form-control mb-4 col-4" placeholder="Last Name">
<input type="text" th:field="*{email}"
class="form-control mb-4 col-4" placeholder="Email">
<input type="text" th:field="*{branch}"
class="form-control mb-4 col-4" placeholder="Branch">
<input type="text" th:field="*{balance}"
class="form-control mb-4 col-4" placeholder="Balance">
<input type="text" th:field="*{transactions}"
class="form-control mb-4 col-4" placeholder="Transactions">
<!--input type="hidden" th:field="*{transactions}" /-->
<button type="submit" class="btn btn-info col-2">Save</button>
</form>
<hr>
<a th:href="@{/customers/list}">Back to Customers List</a>
</div>
错误:
object='customer' 验证失败。 错误计数:1 org.springframework.validation.BindException:org.springframework.validation.BeanPropertyBindingResult:1 个错误字段“交易”对象“客户”中的字段错误:拒绝值 [[Transaction{id=1, amount=1000.0},交易{id=3,金额=100.0}]]; 代码 [typeMismatch.customer.transactions,typeMismatch.transactions,typeMismatch.java.util.List,typeMismatch]; 参数 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [customer.transactions,transactions]; 参数 []; 默认消息[交易]]; 默认消息 [无法将“java.lang.String”类型的属性值转换为属性“transactions”所需的类型“java.util.List”; 嵌套异常是 org.springframework.core.convert.ConversionFailedException:无法从类型 [java.lang.String] 转换为类型 [@javax.persistence.OneToMany @javax.persistence.JoinColumn com.kaneki.springboot.bankapplication.entity。交易] 为值 '[Transaction{id=1, amount=1000.0}, Transaction{id=3, amount=100.0}]'; 嵌套异常是 java.lang.NumberFormatException:对于输入字符串:“[Transaction{id=1, amount=1000.0}, Transaction{id=3, amount=100.0}]”]
从您的 HTML 中,您将接收交易字段作为字符串,因此在控制器中您必须处理该字符串并从中提取 id 和金额,然后将该 id 和金额设置为交易表。 试试这个,如果你已经尝试过或在你的控制器中写过,请分享控制器的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.