我在春天有3个mvc的webapp。情况是我有带url的索引页面,当用户点击它们时,应该显示另一个页面,其中包含所选信息的详细信息。现在显示详细信息页面,但没有任何信息(在索引页面上创建的模型具有正确的变量但在详细控制器中没有 - 在调试模式下)。 索引控制器方法:
@RequestMapping(value="/{site}", method = RequestMethod.GET)
public String showDetails(@RequestParam(value = "site", required = true) String site, Model model){
Catalog product = catalogEndpoint.getByTitle(site);
model.addAttribute("product", product);
return "details";
}
index html:
<form action="#" th:object="${product}" method="post" th:action="@{/details}">
<table border="0" width="600" th:each="sb, poz : ${product}" >
<tr >
<td rowspan="3" width="20"><span th:text="${poz.count}"></span></td>
<td>
<a th:href="@{/details/(site=${sb.tytul})}" th:value="${site}"><span th:text="${sb.tytul}"></span></a>
</td>
</tr>
<tr >
<td><span th:text="${sb.adres}"></span></td>
</tr>
<tr>
<td>category:<b><span th:text="${sb.category.name}"></span></b></td>
</tr>
</table>
</form>
详细说明控制器方法:
@RequestMapping(value = "details/{site}", method = RequestMethod.GET)
public String showHomePage(@PathVariable(value = "site") String site, Model model){
model.addAttribute("product");
return "details";
}
详细信息html:
<form th:object="${product}" method="get" th:action="@{/details}">
<table border="1" width="600" >
<tr >
<td ><span th:text="${tytul}"></span></td>
<td>
<span th:text="${opis}"></span>
</td>
<td><span th:text="${adres}"></span></td>
</tr>
</table>
</form>
我没有任何想法如何映射详细信息网站(我尝试了很多解决方案,但没有)。谢谢你的帮助。
答案 0 :(得分:1)
使用{38}使用th:object
,需要使用*{}
<form th:object="${product}" method="get" th:action="@{/details}">
<table border="1" width="600" >
<tr >
<td ><span th:text="*{tytul}"></span></td>
<td>
<span th:text="*{opis}"></span>
</td>
<td><span th:text="*{adres}"></span></td>
</tr>
</table>
</form>
假设tytul
,opis
和adres
是product
的字段。除非它是一种类型,否则不要忘记
Catalog product = catalogEndpoint.getByTitle(site);
model.addAttribute("product", product);
在您的details
控制器方法中,否则您将没有Catalog
模型属性。
答案 1 :(得分:0)
在详细信息控制器中,您在模型中设置产品对象在哪里?
model.addAttribute("product");
只是settingstring对象“product”,获取产品对象并将其设置在详细控制器中,就像你在showDetails方法中所做的那样
答案 2 :(得分:0)
更改
model.addAttribute("product");
到
Catalog product = catalogEndpoint.getByTitle(site);
model.addAttribute("product", product);
在“showPage”方法中。