Java Thymeleaf显示HashMap

Java Thymeleaf显示HashMap,java,jsp,spring-mvc,hashmap,thymeleaf,Java,Jsp,Spring Mvc,Hashmap,Thymeleaf,这也许是一个愚蠢的问题,但我仍然找不到答案 我的Spring Boot应用程序如下所示: 型号: public class Company { public static final String URL_COMPANY = "http://193.142.112.220:8337/companyList"; private Long iD; private String companyName; public static Map<Long, Object> companyMap

这也许是一个愚蠢的问题,但我仍然找不到答案

我的Spring Boot应用程序如下所示:

型号:

public class Company {

public static final String URL_COMPANY = "http://193.142.112.220:8337/companyList";
private Long iD;
private String companyName;
public static Map<Long, Object> companyMap;

public Long getiD() {
    return iD;
}

public void setiD(Long iD) {
    this.iD = iD;
}

public String getCompanyName() {
    return companyName;
}

public void setCompanyName(String companyName) {
    this.companyName = companyName;
}

@Override
public String toString() {
    return companyName;
}}
@Controller

public class UrlController {

@GetMapping("/success")
public String show(Model model) {

    HashMap<Long, Object> company = (HashMap<Long, Object>) Company.companyMap;
    model.addAttribute("companyID", company);
    return "success";
}
<h1>All Companies:</h1>

<table border="1">
    <tr>
        <th>ID</th>
        <th>Name</th>
    </tr>
    <tr th:each="mapEntry: ${companyID}">
        <td th:text="${mapEntry.key}"></td>
        <td th:text="${mapEntry.value}"></td>

    </tr>
</table>
<a th:href="@{/}">Homepage</a>
</body>
</html>
上市公司{
公共静态最终字符串URL_COMPANY=”http://193.142.112.220:8337/companyList";
私人长iD;
私有字符串companyName;
公共静态地图公司地图;
公共长getiD(){
返回iD;
}
公共无效集合iD(长iD){
this.iD=iD;
}
公共字符串getCompanyName(){
返回公司名称;
}
public void setCompanyName(字符串companyName){
this.companyName=companyName;
}
@凌驾
公共字符串toString(){
返回公司名称;
}}
控制器:

public class Company {

public static final String URL_COMPANY = "http://193.142.112.220:8337/companyList";
private Long iD;
private String companyName;
public static Map<Long, Object> companyMap;

public Long getiD() {
    return iD;
}

public void setiD(Long iD) {
    this.iD = iD;
}

public String getCompanyName() {
    return companyName;
}

public void setCompanyName(String companyName) {
    this.companyName = companyName;
}

@Override
public String toString() {
    return companyName;
}}
@Controller

public class UrlController {

@GetMapping("/success")
public String show(Model model) {

    HashMap<Long, Object> company = (HashMap<Long, Object>) Company.companyMap;
    model.addAttribute("companyID", company);
    return "success";
}
<h1>All Companies:</h1>

<table border="1">
    <tr>
        <th>ID</th>
        <th>Name</th>
    </tr>
    <tr th:each="mapEntry: ${companyID}">
        <td th:text="${mapEntry.key}"></td>
        <td th:text="${mapEntry.value}"></td>

    </tr>
</table>
<a th:href="@{/}">Homepage</a>
</body>
</html>
@控制器
公共类URL控制器{
@GetMapping(“/success”)
公共字符串显示(模型){
HashMap company=(HashMap)company.companyMap;
model.addAttribute(“companyID”,company);
返回“成功”;
}
查看:

public class Company {

public static final String URL_COMPANY = "http://193.142.112.220:8337/companyList";
private Long iD;
private String companyName;
public static Map<Long, Object> companyMap;

public Long getiD() {
    return iD;
}

public void setiD(Long iD) {
    this.iD = iD;
}

public String getCompanyName() {
    return companyName;
}

public void setCompanyName(String companyName) {
    this.companyName = companyName;
}

@Override
public String toString() {
    return companyName;
}}
@Controller

public class UrlController {

@GetMapping("/success")
public String show(Model model) {

    HashMap<Long, Object> company = (HashMap<Long, Object>) Company.companyMap;
    model.addAttribute("companyID", company);
    return "success";
}
<h1>All Companies:</h1>

<table border="1">
    <tr>
        <th>ID</th>
        <th>Name</th>
    </tr>
    <tr th:each="mapEntry: ${companyID}">
        <td th:text="${mapEntry.key}"></td>
        <td th:text="${mapEntry.value}"></td>

    </tr>
</table>
<a th:href="@{/}">Homepage</a>
</body>
</html>
所有公司:
身份证件
名称
因此,我的目标是显示一个充满公司ID和名称的表格。即使我的模型得到了一个地图,我仍然无法在浏览器中看到它。表格是空的

    </tr>
    <tr th:each="mapEntry: {1=Tire Systems, 2=IT Enterprise, 3=Car Manufacture, 4=Electro Market}">
        <td th:text=""></td>
        <td th:text=""></td>

    </tr>

这是我在查看页面源代码时得到的结果。因此我清楚地看到,该地图已加载,但未显示

此外,与“主页”的链接不起作用,我不知道为什么


我遗漏了什么?我正在尝试用公司填写表格,然后,使用这些公司的Id,显示通过此Id附加到公司的材料。我可以在表格中使用Id的超链接吗?

所以您想显示一个地图。如果地图的值是POJO,请尝试以下方法

<tr><th>ID</th><th>Name</th></tr>
<tr th:each="mapEntry : ${companyID}">
    <td th:text="${mapEntry.key}">keyvalue</td>
    <td th:each="item : ${mapEntry.value}" th:text="${item.FIELD_NAME_OF_YOUR_POJO}">keyvalue</td>
</tr>
IDName
键值
键值
这应该行得通。我试图展示的是,这是可能的。迭代取决于您的数据结构。如果您有复杂的数据结构,迭代将相应地改变

如果映射的值是基元类型或java引用类型,则您当前的代码应该可以工作。我已经执行了类似于您的代码的类似代码,并且工作正常。请查看-

 HashMap<Long, Object> company = new HashMap<>();
 company.put(1L, "Hello World");
 model.addAttribute("companyID", company);
HashMap company=newhashmap();
company.put(1L,“你好世界”);
model.addAttribute(“companyID”,company);

如果映射的值是自定义java类型,则按照前面的代码段进行操作。

看起来没有对thymeleaf进行求值,它只是执行常规JSTL。如果thymeleaf正在运行,则属性“th:each”和“th:text”将不会出现在源代码中。它只是在对
${…}进行求值
expressions。所以你建议在.pom文件中缺少依赖性?你的Thymeleaf配置是什么样子的?你能发布一下吗?对我来说,这看起来像是一个解决/Config问题。实际上问题已经解决了。在设置一个新的spring启动项目时,我没有将Thymeleaf作为一个选项。正如@Metroids所说的,它没有被评估。添加一个配置中的hymeleaf选项解决了这个问题。begginer犯了一个愚蠢的错误。