【问题标题】:Get Query String Values in Spring MVC Controller在 Spring MVC 控制器中获取查询字符串值
【发布时间】:2013-07-29 21:19:25
【问题描述】:

我有一个这样的引荐来源网址:

http://myUrl.com?page=thisPage&gotoUrl=https://yahoo.com?gotoPage

如何在我的 Spring Controller 中获取“page”和“gotoUrl”的值?

我想将这些值存储为变量,以便以后重复使用。

【问题讨论】:

  • 看看@RequestParam注解。
  • 你真的是想说“推荐人”吗?如果是这样,则接受的答案是错误的。
  • 您可能应该对 gotoUrl 的值进行 URL 编码(尽管我不确定在这个特定示例中它在功能上是否重要)。

标签: java spring jsp spring-mvc


【解决方案1】:

在 SpringMVC 中,您可以使用 @RequestParam 注释指定查询字符串中的值被解析并作为方法参数传入。

public ModelAndView getPage(
    @RequestParam(value="page", required=false) String page, 
    @RequestParam(value="gotoUrl", required = false) String gotoUrl) {
}

【讨论】:

    【解决方案2】:

    您可以使用 HttpServletRequest 接口中的getParameter() 方法。

    例如;

      public void getMeThoseParams(HttpServletRequest request){
        String page = request.getParameter("page");
        String goToURL = request.getParameter("gotoUrl");
    }
    

    【讨论】:

    • 如果我想将请求作为参数传递,这是有道理的。但是,如果我不想将 HttpServletRequest 作为参数传递给我的控制器操作,有没有办法检索参数?
    • 虽然这个答案在技术上是正确的,但它不是使用 Spring 的推荐方法,@Affe 的答案更重要。
    • @AkshaySinghal 除非您事先不知道参数但您需要一种方法来处理它们 - 然后您可以使用 request.getParameterNames()request.getParameterMap()
    • @LukaszWiktor 很抱歉,我不理解该评论。它似乎与任何问题或答案无关。
    • @AkshaySinghal 我想说 Raunak 的回答很有帮助。就我而言,我不知道参数的确切名称。我需要创建一个可以读取任何参数的端点。当我注意到这个答案时,我还发现了我之前评论中提到的两种方法。
    【解决方案3】:

    在 Spring MVC 控制器中获取QueryString

    这是 Liferay 门户特定的解决方案,它有效。

    查询字符串示例:?reportTypeId=1&reportSeqNo=391

    为了在Liferay Portal中获取reportSeqNo的值,我们需要获取Original Servlet Request。

    String reportSeq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(renderRequest)).getParameter("reportSeqNo");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 2018-07-12
      • 2018-03-27
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多