我正在 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";
}
最佳答案
有多种方法可以处理这个问题,具体取决于代码的其余部分的外观。
可以说,最简洁的方法是使用 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
,您可以创建两个 Controller 方法并使用 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";
}
关于Spring检查是否有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38200945/