gpt4 book ai didi

java - Spring Boot 表单数据与 FreeMarker 绑定(bind)列表

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:34 26 4
gpt4 key购买 nike

我正在尝试将我的表单绑定(bind)到数据传输对象。该表单是 FreeMarker 模板。它们如下:

数据对象:

@Data
public class TransferObject {
private List<Subclass> subclassInstances;

public TransferObject(Data data) {
// this takes the data and populates the object, also works
// we end up with a list of subclasses.
}

@Data //lombok -> generates getters and setters
@AllArgsConstructor
private static class Subclass {
private String id;
private String code;
}
}

Controller :

@GetMapping({"/endpoint", "/endpoint"})
public String endpoint(Model model, @RequestParam(value="code", required=false, defaultValue="") String code) {

// this retrieves the data, but that works so it's irrelevant here
Data data = this.dataService.findByCode(code).orElse(null);

if(data != null) {
TransferObject transferObject = new TransferObject(data);
model.addAttribute("data", transferObject);

} else {
log.warn("no data found");
}

return "endpoint";
}

Freemarker 模板:


<form:form action="/endpoint" method="post" modelAttribute="data">
<#if data??>
<#list data.subclasses as subclass>
${subclass} <!-- this shows an object with 2 fields that are filled -->

<@spring.bind "data.subclasses[${subclass?index}].id"/>
<input type="text" value="${subclass.id}"/> <!-- This line fails -->

<@spring.bind "data.subclasses[${subclass?index}].code"/>
<input type="text" value="${subclass.code}"/>

</#list>
</#if>
</form:form>

模板中存在错误,指出:
[以下内容已评估为空或缺失:==> sublcas.id] 我不明白,因为我在上面打印了子类,它就在那里..

我也尝试过改变

<input type="text" value="${subclass.id}"/>

<input type="text" value="${data.subclasses[subclass?index].id}"/>

但是它告诉我“数据”为空或丢失。我做错了什么?

最佳答案

我终于发现了这个问题:

问题出在 TransferObject 上。 Sublclass 类具有私有(private)访问权限。所以没有找到任何 getter 或 setter。这就是 FreeMarker 模板找不到 .id 属性的原因。

当我尝试在普通 Java 代码中访问 getter 时,出现编译错误:错误:(65, 77) java: Data.Subclass 中的 getId() 是在无法访问的类或接口(interface)中定义的在我看来,这比惊呼它为空或丢失更好。

关于java - Spring Boot 表单数据与 FreeMarker 绑定(bind)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56439982/

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