我在Spring MVC中还很陌生,对于如何正确地创建到视图页面的链接(必须由定义在控制器类中的方法来处理),我存在以下疑问。
所以我有以下情况:
进入视图,我使用模型对象名称
<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是由定义在控制器类中的此方法处理的资源:
@RequestMapping(value = "/visualizzaProspetto", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
.....................................................
.....................................................
DO SOMETHING
.....................................................
.....................................................
return "prospettoRendicontazione";
}
好的,这是正确的名称。
现在我的问题是,当用户单击链接时,我不必处理简单的visualizzaProspetto,但还必须将表示定义的prgPro字段的值的参数传递到我的Twp1007Progetto模型对象实例($ {progetto .prgPro}值),因为它是数据库上单击的对象的主键。
那么,做这件事的最好方法是什么?我知道使用Spring可以传递参数或路径变量,但是我真的不知道如何正确处理这种情况。
特纳克斯
最佳答案
带有请求参数:
<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
值,具体取决于它是否可以包含保留的字符。