【问题标题】:How to pass value from url (taken from JSP) to the controller in Spring MVC如何将值从 url(取自 JSP)传递到 Spring MVC 中的控制器
【发布时间】:2015-07-14 07:17:31
【问题描述】:

我试图在我的 JSP 中创建一个删除按钮来删除我的数据库中的行。通过单击按钮,我将获取行 ID 并将其设置在我的 URL 中,如下所示:

<tr>
	<td><c:out value="${project.projectId}" /></td>
	<td><c:out value="${project.title}" /></td>
	<td><c:out value="${project.domain}" /></td>
	<td><c:out value="${project.lang}" /></td>
	<td><c:out value="${project.author}" /></td>
	<td><c:out value="${project.created}" /></td>
	<td><a href="${pageContext.request.contextPath}/project/edit/${project.projectId}">Edit</a>
    <a href="${pageContext.request.contextPath}/project/delete/${project.projectId}">Delete</a>
	</td>

这是我得到的网址:http://localhost:8080/IRS/project/delete/414

现在 414 是行 ID。此时我想将此 ID 发送到我的控制器并从那里删除该行。有人可以帮助我吗?谢谢

【问题讨论】:

    标签: spring jsp model-view-controller


    【解决方案1】:

    这个 url 可以在你的控制器中映射如下:

    @RequestMapping(value="/project/delete/{projId}")
    public String deleteFunction(@PathVariable String projId){
    
      ...
    
    }
    

    编辑: 如果没有有关您项目的详细信息,很难回答您的问题。我正在谈论的信息是:项目文件夹结构、web.xml、应用程序上下文配置,如果您的配置是基于 xml 或注释的。如果您对 Spring MVC 不是很有经验,我建议您:

    • 仔细阅读this文档
    • 看一下thisthisspring项目模板,了解Spring MVC。

    绝对是您在控制器映射中的问题。验证您的上下文配置文件(相当于来自this 模板的/src/main/webapp/WEB-INF/application-servlet.xml)中是否有&lt;mvc:annotation-driven/&gt;

    【讨论】:

    • 安德烈感谢您的回复。但我仍然收到“HTTP 状态 404/请求资源不可用”错误。我不知道如何将我的 JSP 定向到控制器。
    • 如果您使用基于xml的spring配置,您能否提供您的上下文bean定义(可以在*-servlet.xml文件中找到)和servlet-mappin,可以在web.xml中找到?我也将@RequestMapping(value="/delete/{projId}") 更改为@RequestMapping(value="/project/delete/{projId}")
    • 嗨,这是 servlet 映射:SpringDispatcher*.do servlet 映射>
    【解决方案2】:

    好的,感谢 Adnriy,我发现 xml 文件中的 SpringDispacher 没有将我的 url 指向正确的控制器。

    由于我对 xml 文件没有足够的了解,所以我找到了另一种解决方法,但是我知道它有点令人毛骨悚然,但它对于快速修复很有好处。

    这是新的 HTML:

    <tr>
    	<td><c:out value="${project.projectId}" /></td>
    	<td><c:out value="${project.title}" /></td>
    	<td><c:out value="${project.domain}" /></td>
    	<td><c:out value="${project.lang}" /></td>
    	<td><c:out value="${project.author}" /></td>
    	<td><c:out value="${project.created}" /></td>
    	<td><a href="${pageContext.request.contextPath}/project/${project.projectId}/edit.do">Edit</a>
        <a href="${pageContext.request.contextPath}/project/${project.projectId}/delete.do">Delete</a>
    	</td>

    然后在我的控制器中我使用了这个值:

    @RequestMapping(value="/project/{prjId}/delete.do" ,method = RequestMethod.GET)
    public ModelAndView delete(HttpServletRequest request, @PathVariable String prjId) throws IOException{
      ......
      }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2012-11-16
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      相关资源
      最近更新 更多