2016-07-05 3 views
2

Я строю поисковую систему весной и на данный момент могу запросить результаты из базы данных. Мой URL похожПроверка пружины, если нет параметра

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

ответ

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

Спасибо, что это работает – NoR3s

Смежные вопросы