我是编码菜鸟。
我基于编码的春季宠物诊所。
现在不传递对象
<div th:replace="~{::caller-select('사이트', 'hstry_site', ${historySites})}"></div>
<div th:replace="~{::caller-select('유형', 'hstry_type', ${historyTypes})}"></div>
<div th:replace="~{::caller-input('문의 내용', 'hstry_content')}"></div>
'hstry_content' 好的。但 'hstry_site' 和 'hstry_type' 不通过。
chrome开发模式>网络>formdata>3值都OK。
我可以知道如何修复吗?
控制器打印对象如下。
[History@23d723c8 hstry_id = [null], hstry_call_time = [null], hstry_content = '12312312', hstry_site = [null], hstry_type = [null], tel_no = '01000000001']
下面是历史课。
@Column(name = "hstry_content")
private String hstry_content;
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "hstry_type_id", referencedColumnName = "id", insertable = false, updatable = false)
private HistoryType hstry_type;
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "hstry_site_id", referencedColumnName = "id", insertable = false, updatable = false)
private HistorySite hstry_site;
当更改列信息时
// @Column(name = "hstry_type_id")
// private Integer hstry_type;
//
// @Column(name = "hstry_site_id")
// private Integer hstry_site_id;
它传递给控制器。
您似乎在 Spring 应用程序中传递
hstry_site
和 hstry_type
对象时遇到问题,可能与 Thymeleaf 模板和表单提交有关。让我们分解一下步骤,以确保这些对象正确传递到您的控制器。
确保您的 Thymeleaf 模板(
caller-select
和 caller-input
片段)正确绑定到 hstry_site
和 hstry_type
。
<!-- For hstry_site -->
<div th:replace="~{::caller-select('사이트', 'hstry_site', ${historySites})}"></div>
<!-- For hstry_type -->
<div th:replace="~{::caller-select('유형', 'hstry_type', ${historyTypes})}"></div>
<!-- For hstry_content -->
<div th:replace="~{::caller-input('문의 내용', 'hstry_content')}"></div>
确保:
historySites
和 historyTypes
已正确填充到您的控制器模型中。hstry_site
和 hstry_type
。在控制器方法中,确保正确接收和处理这些对象。
@PostMapping("/saveHistory")
public String saveHistory(@ModelAttribute("history") History history) {
// Check the values received in history object
System.out.println(history);
// Save logic or further processing
return "redirect:/success"; // Redirect to success page or another endpoint
}
确保您的
History
实体正确映射到 HistorySite
和 HistoryType
。
@Entity
public class History {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long hstry_id;
@Column(name = "hstry_content")
private String hstry_content;
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "hstry_type_id", referencedColumnName = "id", insertable = false, updatable = false)
private HistoryType hstry_type;
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "hstry_site_id", referencedColumnName = "id", insertable = false, updatable = false)
private HistorySite hstry_site;
// Getters and setters
}
确保
HistoryType
和 HistorySite
实体也正确定义和映射。
如果您更改为直接使用
Integer
字段(hstry_type_id
和 hstry_site_id
),请记住相应地更新您的实体和控制器。此更改可能会影响您处理表单提交和数据库操作的方式。
仔细检查:
@ModelAttribute
的控制器方法。通过确保这些步骤,您应该能够正确地将
hstry_site
和 hstry_type
对象传递到控制器,并按预期将它们保留在数据库中。
解决这个问题。
public String processAddCallerForm(Caller caller, @Valid History 历史记录, BindingResult 结果, @PathVariable("tel_no") String tel_no) { }
字段“hstry_site”上的对象“历史”中的字段错误:拒绝值[리드인];代码 [typeMismatch.history.hstry_site、typeMismatch.hstry_site、typeMismatch。 ......
感谢回复,并帮忙解决。