我在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值,具体取决于它是否可以包含保留的字符。

10-04 23:40