【问题标题】:Distinguish empty value from empty string ("") in Url query parameter区分 Url 查询参数中的空值和空字符串 ("")
【发布时间】:2014-10-01 23:52:32
【问题描述】:

在 Spring MVC 中如何区分像 /url?var/url?var="" 这样没有值的 URL?

控制器中的方法HttpServletRequest::getParameterMap() 以两种方式返回""

我需要这个来将命令从查询中分离到指定资源。

【问题讨论】:

    标签: java http url spring-mvc httprequest


    【解决方案1】:

    做你想做的事的一个简单方法是使用getQueryString()HttpServletRequest。您只需检查返回的字符串是否包含您要查找的模式。

    如果您经常需要类似的东西(就像在许多控制器方法中一样),您还可以轻松地创建一个自定义 HandlerMethodArgumentResolver 来指示 URL 中存在字符串。

    Here 是相关的 Javadoc,here 是一个示例

    【讨论】:

      【解决方案2】:

      /url?var 是一个有效的 URL,表明您有一个未初始化的参数 var

      所以默认情况下它被初始化为空字符串。这就是框架行为。

      如果您不想在 HttpServletRequest::getParameterMap() 中看到该参数,请不要将其与 URL 一起使用(即 /url 应该是您的调用)

      【讨论】:

      • 那不能解决我的问题。我正在寻找方法,例如返回参数映射和像 /url?car 这样的参数将返回 null - /url?query=asd&run -> ["query":"asd", "run":null]
      猜你喜欢
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2015-02-26
      • 2015-02-02
      • 1970-01-01
      相关资源
      最近更新 更多