弹簧检查是否没有参数

时间:2016-07-05 10:21:40

标签: spring model-view-controller

我在Spring中构建搜索引擎,此刻我可以查询数据库中的结果。我的网址就像

  

www.myurl.com/jobs=?test

我做了一个"如果"要检查对象是否为空的语句,它必须返回一条消息,表明数据库中没有找到任何内容。但是,当我去

  

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";
}

1 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题,具体取决于代码的其余部分。

可以说最干净的方法是使用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";
}