重定向到URL时,无法在SpringMVC Controller中访问请求参数

时间:2013-06-30 13:26:36

标签: java spring jsp spring-mvc url-parameters

我有一个表单,可以向我的控制器提交新文章。

JSP页面

<form class="form-signin" method="post"
    action="/articleViewer">
<div class="control-group" style="margin-top: -5px;">
    <label class="control-label text-info" for="commentContent"><strong>Post
            Comment</strong></label>
    <div class="controls">
        <textarea class="FormElement" name="area2" id="commentContent"
        style="width: 100%;"></textarea>
    </div>
</div>
<button type="submit" class="btn btn-primary" style="margin-left: 90%;">Post</button>
</form>

控制器方法:

@RequestMapping(value="/articleViewer", method = RequestMethod.POST)
public String saveArticleComment (HttpServletRequest request, HttpServletResponse response,Principal principal, ModelMap map) throws ServletException, IOException{
    //processing request
    System.out.println("Link : "+Path.Jsp.ARTICLE_VIEWER_PAGE);
    return Path.Jsp.ARTICLE_VIEWER_PAGE; //this ARTICLE_VIEWER_PAGE = /articleViewer
}

现在从上面的控制器方法我想重定向到另一个我要通过的方法 目前已将文章ID保存为http://<myurl>/article?articleId="xyz".

这是我处理重定向的get方法代码。

@RequestMapping(value="/articleViewer", method= RequestMethod.GET)
public String articleViewer(HttpServletRequest request, Principal principal,
        ModelMap map, HttpServletResponse response)
        throws DatabaseException {
        //I wanna access article id here.
    return Path.Jsp.ARTICLE_VIEWER_PAGE;
} 

我想知道如何在上述方法中访问传递的请求参数?

3 个答案:

答案 0 :(得分:1)

如果您提交没有参数的操作网址,或者为此目的使用hidden字段,那么您应该返回该参数作为结果。因此,您不会丢失它,或者重定向到不再需要参数的页面。要在网址中传递参数

<form class="form-signin" method="post" action="/articleViewer?varArticleID=94"> 

答案 1 :(得分:1)

我在返回时使用Redirect属性解决了它...

return "redirect:/articleViewer?varArticleID="+getVarArticleID();

答案 2 :(得分:0)

因此,如果您需要提交后的页面,请更改

形式的操作值
<form class="form-signin" method="post"
    action="/articleViewer?varArticleID={yourArticleid}">

提交后还需要

return Path.Jsp.ARTICLE_VIEWER_PAGE+"?varArticleID="+request.getParameter("varArticleID");