Spring检查是否有参数

标签 spring model-view-controller

我正在 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/

相关文章:

asp.net-mvc - 我的 Azure 上的 MVC 应用程序出现 500 错误

model-view-controller - 胖模型、瘦 Controller 和 MVC 设计模式

java - 为什么 Spring Boot 返回一个字符串而不是 JSON

java - 更改 Java 的 HTML 输出

spring - Thymeleaf:动态构建变量名

mongodb - 如何在golang中为嵌套文档设置ObjectId?

java - 是否可以在 jSTL 中使用 foreach 同时迭代两个项目?

spring - 您可以在 @PreAuthorize 中使用 SpEL 引用实例属性吗?

spring - 如何在服务层中结合 JSR-303 和 Spring Validator 类?

javascript - Ember.js 中的嵌套 View