我在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";
}
答案 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";
}