首页 > 解决方案 > 如何使用 FreeMarker 显示实体?

问题描述

我有实体

@Entity
@Table(name="fights")
public class Fight {

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

@OneToMany(mappedBy = "fight", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Sportsman> sportsmans;

private Long identifWin;

private Long identifEvent;
/* getters and setters */
}

和控制器

@GetMapping("/fights")
public String getAllFights(Model model) {
    List fights = fightServise.getAllFight();
    model.addAttribute("fights", fights);
    return "fights";
}

我不知道如何使用 FreeMarker 显示此实体。这段代码显示了一些难以理解的东西:

<form method="get" action="/fights">
<#list fights as fight>
    ${fight}
<#else>
    No fight
</#list>

如果我访问单个字段,则会出现异常。

reeMarker 模板错误(DEBUG 模式;在生产中使用 RETHROW!):以下已评估为 null 或缺失:==>fight.fightid [in template "fights.ftl" at 第 3 行第 11 列]

数据库中存在值
更新
第二个实体:

@Entity
@Table(name = "sportsmans")
public class Sportsman {

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

private String firstName;

private String lastName;

private String alias;

private int growth;

private int weight;

private int lengthOfHands;

private int countOfLose;

private int countOfWin;

private int countOfDraw;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="fightid")
private Fight fight;
/* getters and setters */
}

标签: htmlspring-bootfreemarker

解决方案


<form method="get" action="/fights">
<#list fights as fight>
    <#list fight.getSportsmans() as b>
        ${b.getFirstName()}
    </#list>
<#else>
    No fight
</#list>


推荐阅读