如何在单击链接时将java对象从jsp传递给spring控制器

时间:2014-12-13 19:34:42

标签: java spring spring-mvc

我正在显示类型文档的Java对象列表,如下所示

<c:forEach var="document" items="${documentationList}">
  <tr>
    <td valign="top" >${document.documentation}</td> <!-- c:out is not used here because, it is escaping HTML characters -->
    <td width="75" valign="top"><a href="" ><c:out value="${document.stateCode}" /></a></td>
    </c:when>
    <td width="75" valign="top"><c:out value="${document.type}" /></td>
  </tr>
</c:forEach>

状态代码显示为超链接。我想要做的是,当点击链接时,我想将该特定的java对象(&#39;文档&#39;)传递给java控制器,然后在新页面上显示更详细的信息。春天有没有办法解决这个问题?(我正在使用spring MVC)。

3 个答案:

答案 0 :(得分:2)

您只是在浏览器和服务器之间使用常规HTTP。

对于GET请求,您可以在URL中传递信息,这就是它。

您应该将文档的标识符(例如?docid = N)作为URL的一部分传递给服务器,然后在新请求中将该文档加载到服务器上。

如果文档没有唯一标识符,那么您可能必须将文档存储在会话中。

答案 1 :(得分:0)

如果你计划传递状态,你可能想要使用会话。

其他一些可能有帮助的帖子 - How to use Session attributes in Spring-mvc

只是一个简单的示例 - http://www.javacodegeeks.com/2013/04/spring-mvc-session-tutorial.html

注意Spring控制器中的@SessionAttributes。

//For example inside a jsp you can use -
session.setAttribute("paramName","value");

//and in a controller
@SessionAttributes("paramName")

如果你环顾四周,有很多这样的例子。

答案 2 :(得分:0)

如果你想使用 GET 方法,那就不会那么好了 链接必须像:

 <a href="yourURL?document.documentation="+${document.documentation}+"&document.stateCode="+${document.stateCode}+
 "&document.type="+${document.type}></a>

和你的控制器类似。

@RequestMapping(value="/yourURL",method= RequestMethod.GET )
public ModelAndView doMyWork(@ModelAttribute("document" ) Document document)
{
}

或,

使用 POST ,您需要一个表单并在点击链接时使用javascript提交

像这样的东西:       

<form id="hidenForm" style="display: none;" method="POST" action="yourURL">
    <input type="text" name="document.documentation"  value="${document.documentation}"/>
    <input type="text" name="document.stateCode" value="${document.stateCode}"/>
    <input type="text" name="document.type" value="${document.type}"/>
</form>

并在javascript中使用jquery

fucntion submitHidden()
{
    $("#hidenForm").submit();
}

控制器更改。

@RequestMapping(value="/yourURL",method= RequestMethod.POST)