【问题标题】:Unable to Access Request Parameter in SpringMVC Controller while redirecting to URL重定向到 URL 时无法访问 SpringMVC 控制器中的请求参数
【发布时间】:2013-06-27 18:26:25
【问题描述】:

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

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://&lt;myurl&gt;/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;
} 

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

【问题讨论】:

  • 这意味着你丢失了url中的一个重要参数。
  • 是的,提交表单后我丢失了参数,它显示页面空白 bcz 它需要 ArticleID 作为输入参数
  • 对,你没发jsp,没法回答。
  • 这在意料之中。 Post 参数在请求正文中发送,而不是在查询字符串中。您应该保存评论,然后重定向。见en.wikipedia.org/wiki/Post/Redirect/Get
  • 不要在 cmets 中发布代码。编辑您的问题。

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


【解决方案1】:

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

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

【讨论】:

  • 通过使用这个我得到了 URL /articleViewer?varArticleID=79 但它没有调用我的 Get 方法代码
  • 我的意思是在这个网址之后我的表格也是空白的,没有文章没有 cmets
【解决方案2】:

我通过使用 Redirect 属性来解决它...

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

【讨论】:

    【解决方案3】:

    因此,如果您需要提交后的页面,请更改表单的操作值,例如

    <form class="form-signin" method="post"
        action="/articleViewer?varArticleID={yourArticleid}">
    

    提交后还需要

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

    【讨论】:

    • 我的方法,即 saveArticleComment 映射到这个方法我应该如何将它映射到 /articleViewer?articleId=94
    • 返回后会出现错误 404
    • 当我使用 return Path.Jsp.ARTICLE_VIEWER_PAGE+"?varArticleID="+request.getParameter("varArticleID"); 时显示错误 404;
    • 当我只使用
    • 好吧,我不擅长使用spring方法。我认为获取上述url数据的方法应该写在你处理reuest的GET方法中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2019-08-25
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多