【问题标题】:Spring check if there is no param弹簧检查是否没有参数
【发布时间】:2016-07-05 10:21:39
【问题描述】:

我正在 Spring 中构建一个搜索引擎,目前我可以从数据库中查询结果。我的网址是这样的

www.myurl.com/jobs=?test

我做了一个“if”语句来检查对象是否为空,它必须返回一条消息,即在数据库中没有找到任何东西。但是,当我去

www.myurl.com/jobs

我也收到同样的信息。

有没有办法解决这个问题,所以我没有收到该消息?我需要检查是否没有参数 - 然后它应该返回或执行其他操作。

@RequestMapping(value = "/jobs", method=RequestMethod.GET)
public String search(@RequestParam(value="search", required=false) String result, Model model){
    model.addAttribute("results", jobsDao.getQueryresult(result));
    return "result";
}

【问题讨论】:

    标签: spring model-view-controller


    【解决方案1】:

    有几种方法可以处理此问题,具体取决于您的其余代码的外观。

    可以说最简洁的方法是使用Optional 来区分每种情况:

    @RequestMapping(value = "/jobs", method=RequestMethod.GET)
    public String search(@RequestParam(value="search") Optional<String> query, Model model) {
        model.addAttribute("results", jobsDao.getQueryresult(query));
        if (query.isPresent()) {
            return "results";
        } else {
            return "jobs-index";
        }
    }
    

    如果您不能使用 Java 8 的 Optional,您可以创建两个控制器方法并使用 param 限定符缩小映射范围:

    // this will only get triggered if the URL contains the "search" parameter
    @RequestMapping(value = "/jobs", method=RequestMethod.GET, params="search")
    public String search(@RequestParam(value="search") String query, Model model) {
        model.addAttribute("results", jobsDao.getQueryresult(query));
        return "results";
    }
    
    @RequestMapping(value = "/jobs", method=RequestMethod.GET)
    public String search() {
        return "jobs-index";
    }
    

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 2014-07-09
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多