java - 如何使用 Spring MVC 将参数(标识对象的主键)从 View 传递到 Controller ?

标签 java spring spring-mvc jakarta-ee

我对 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/

相关文章:

java - 使用 jar 文件从命令行运行 junit

在 Tomcat 8 上启动 Spring 应用程序时出现 java.lang.IllegalAccessError

java - 下载文件而不知道其大小

java - 使用方法在 Java 列表中搜索匹配项

java - 如何使用 Cassandra 2.1.9 运行 Spring Data Cassandra 2.2.1?

java - Spring 启动卡夫卡消息传递。如何简化处理程序的 dto 映射?

java - 我们给 spring 注解起个名字是有原因的吗?

java - 使用 Spring @RequestParam 无法在 Controller 中获取 '#' 符号

java - Spring MVC 3.0 访问 session 变量

java - 尝试上传时无效的 CSRF token Spring 4 MVC