0

我在 spring 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";
    }

索引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>

我不知道如何映射详细信息站点(我尝试了很多解决方案,但没有)。感谢帮助。

4

3 回答 3

1

使用 thymeleaf,使用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,opisadres是 的域product。除非是类型,否则不要忘记

Catalog product = catalogEndpoint.getByTitle(site);
model.addAttribute("product", product);

在您的details控制器方法中,否则您将没有Catalog模型属性。

于 2013-08-22T20:33:29.403 回答
0

在您的详细信息控制器中,您在模型中的哪里设置产品对象?

 model.addAttribute("product"); 

只是设置字符串对象“产品”,获取产品对象并将其设置在详细信息控制器中,就像您在 showDetails 方法中所做的那样

于 2013-08-22T17:37:21.207 回答
0

改变

model.addAttribute("product");

Catalog product = catalogEndpoint.getByTitle(site);
model.addAttribute("product", product);

在“showPage”方法中。

于 2013-08-22T17:43:13.383 回答