gpt4 book ai didi

java - Thymeleaf:如何在嵌套列表实体的情况下正确指定 HTML 名称和 Id 属性?

转载 作者:行者123 更新时间:2023-11-30 12:03:01 25 4
gpt4 key购买 nike

实体包含嵌套列表。使用 th:each,我可以看到值显示在表单上,​​但没有更新在数据库中持续存在,并且确定这是因为指定的不正确的“名称”和/或“id”属性导致 Thymeleaf 未转码。我如何指定它们?

我尝试使用名称和 ID 的不同组合并遵循文档,但没有一个有效。仅尝试使用 th:each 循环变量,但这也不起作用。

主要实体:CustomAttributesMap.java

@Entity
public class CustomAttributesMap implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;

private EntityType entityType;

@ElementCollection
//@ManyToMany
private List<CustomAttributesFieldMap> customAttributesFieldMapList = new ArrayList<>();
// setter and getter code
...
}

第一个 child 名单:CustomAttributesFieldMap.java

@Entity
public class CustomAttributesFieldMap implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;

private CustomFieldType fieldType;

@ElementCollection
//@ManyToMany
private List<CustomAttribute> customAttributesList = new ArrayList<>();
// setter and getter methods.
...
}

第二个子列表:

@Entity
public class CustomAttribute implements Serializable {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

private String name;
private boolean required;
private String value;
// setter and getter methods
....
}

Controller .java

...
@ModelAttribute("customAttributesMapList")
public List<CustomAttributesMap> populateCustomAttributes() {
return customerAttributeMapService.findAll();
}


@PostMapping("/customAttributeCustomization")
public String saveCustomAttributeCustomization(
List<CustomAttributesMap> customAttributesMapList, Model model) {
Logger.getLogger(WebController.class, "Logigng for WebController").error(""
+ "customAttributesMapList " + customAttributesMapList);
for(CustomAttributesMap customAttributesMap: customAttributesMapList) {
customerAttributeMapService.save(customAttributesMap);
}
....

CustomAttributesEdit.html

<form class="user" th:action="@{/customAttributeCustomization}" th:object="${customAttributesMapList}" method="POST">
..
<div class="card p-3 collapse" style="max-width: 50rem;" th:each="customAttributesMap, iterIndex: ${customAttributesMapList}" th:id="${customAttributesMap.entityType}">
..
<div th:each="customAttributeFieldMap, iterStat : ${customAttributesMap.customAttributesFieldMapList}">
...
<table align="left" id="alphaTable" class="table table-sm table-bordered">
<thead>
<tr class="d-flex" id="theadRow">
<th class="col-7 text-center" >Name</th>
<th class="col-3 text-center" >Mandatory</th>
<th class="col-2 text-center">Delete</th>
</tr>
</thead>
<tbody>
<tr th:each="customAttribute, rowStat : ${customAttributeFieldMap.customAttributesList}" class="d-flex" th:id="rowalpha-+${rowStat.index}">
<td class="col-7">
<input class="form-control" type="text" th:value="${customAttribute.name}" th:id="customAttributesMapList+${iterIndex.index}+.customAttributesFieldMapList+${iterStat.index}+.customAttributesList+${rowStat.index}+.name" name="customAttributesMapList[+${iterIndex.index}+].customAttributesFieldMapList[+${iterStat.index}+].customAttributesList[+${rowStat.index}+].name"/>

</td>
....
</table>
</form>

我希望在上面的表单中,customattribute.name 的值需要编辑并保存在数据库中,目前还没有发生。在 Controller 上进行调试后,主要实体列表 (CustomAttributesMapList) 未更改,并且不包含 HTML 表单上的任何用户更新。当然,这是由于上面的代码输入字段的名称和 ID 不正确,无法正确处理。

更新好的,我找不到任何有用的答案,所以我将实体展平为具有单个实体 CustomAttrubute,它同时具有 entityType 和 fieldType 属性,并且具有 CustomAttributesMap(列表),其中包含CustomAttribute 实体和这个映射将从 web Controller 发送到前端的表单对象。但我想回顾一下是否有人对 Thymeleaf 难题有了答案:)。

最佳答案

使用@RequestMapping 代替@PostMapping

    @RequestMapping(value = "/customAttributeCustomization",method=RequestMethod.POST)
public String saveCustomAttributeCustomization(
List<CustomAttributesMap> customAttributesMapList, Model model) {
Logger.getLogger(WebController.class, "Logigng for WebController").error(""
+ "customAttributesMapList " + customAttributesMapList);
for(CustomAttributesMap customAttributesMap: customAttributesMapList) {
customerAttributeMapService.save(customAttributesMap);
}

关于java - Thymeleaf:如何在嵌套列表实体的情况下正确指定 HTML 名称和 Id 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58054528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com