Java Thymeleaf显示HashMap
这也许是一个愚蠢的问题,但我仍然找不到答案 我的Spring Boot应用程序如下所示: 型号: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
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犯了一个愚蠢的错误。