我对 Spring MVC 还很陌生,对于如何正确创建 View 页面的链接(必须由 Controller 类中定义的方法来处理)有以下疑问。
所以我有以下情况:
在 View 中我使用模型对象名称
<c:forEach items="${scuola.twp1007Progettos}" var="progetto" varStatus="itemProgetto">
<!-- Visualizza il progetto solo se è un progetto PNSD: -->
<c:if test="${progetto.flgTipPrg == 'P'}">
<div class="group-item">
<a href="visualizzaProspetto">
<img src="<c:url value="resources/img/icons/projects/PNSD.png" />">
</a>
<div>
<h4><a href="visualizzaProspetto">${progetto.codPro}</a></h4>
<p>${progetto.twp1009Tipostaprogetto.desTipSta}</p>
</div>
</div>
</c:if>
</c:forEach>
因此,正如您在前面的代码片段中所看到的,我有一个 progetto 变量,它是名为 Twp1007Progetto 的模型类的实例。该模型类包含我在前面的代码片段中正确使用的一些字段(例如 ${progetto.codPro})。
好的,到目前为止我没有任何问题,并且我正确访问了 progetto 变量的先前属性。
在前面的代码片段中我也有这个链接:
<a href="visualizzaProspetto">
其中 visualizzaProspetto 是由定义到 Controller 类中的此方法处理的资源:
@RequestMapping(value = "/visualizzaProspetto", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
.....................................................
.....................................................
DO SOMETHING
.....................................................
.....................................................
return "prospettoRendicontazione";
}
好的,这是正确的调用。
现在我的问题是,当用户单击链接时,我不必处理简单的visualizzaProspetto,但我还必须传递一个表示定义到我的 Twp1007Progetto 模型对象实例中的 prgPro 字段的值(${progetto.prgPro} 值),因为它是数据库中单击的对象。
那么,做这件事的最佳方法是什么?我知道使用 Spring 我可以传递参数或路径变量,但我真的不知道如何正确处理这种情况。
Tnx
最佳答案
带有请求参数:
<a href="visualizzaProspetto?codPro=${progetto.codPro}">
@RequestMapping(value = "/visualizzaProspetto", method = RequestMethod.GET)
public String home(@RequestParam String codPro, Locale locale, Model model) {
...
}
或者使用路径变量:
<a href="visualizzaProspetto/${progetto.codPro}">
@RequestMapping(value = "/visualizzaProspetto/{codPro}", method = RequestMethod.GET)
public String home(@PathVariable String codPro, Locale locale, Model model) {
...
}
<小时/>
您可能需要URL encode codPro
值,具体取决于它是否可以包含保留字符。
关于java - 如何使用 Spring MVC 将参数(标识对象的主键)从 View 传递到 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32313478/