`

Spring optional @PathVariable?

 
阅读更多

Q:

Is it possible to somehow get a hold of a @PathVariable in a @ControllerAdvice given that the PathVariable is only present in some requests?

If this was in a Controller, I could write 2 different Controllers. But a ControllerAdvice always applies to all requests. I can't have a ControllerAdvice apply to only Controllers where the PathVariable is defined.

 

A:

You can inject the Map of path variables and check for the existence of a key.

public void advise(@PathVariable Map<String, String> pathVariables) {
    if (pathVariables.containsKey("something")) {
        String something = pathVariables.get("something");
        // do something

    } else {
        // do something else
    }
}

 

分享到:
评论

相关推荐

    spring mvc中的@PathVariable获得请求url中的动态参数

    在Spring MVC框架中,`@PathVariable`是一个注解,它用于从URL模板中获取动态参数并将其绑定到控制器方法的参数上。这个注解在处理RESTful风格的HTTP请求时非常有用,因为它允许我们将URL路径的一部分与方法参数直接...

    RESTful Web Service Demo

    总的来说,"RESTful Web Service Demo"项目是一个实践性的教程,它向我们展示了如何使用Java和Spring Boot来创建一个支持CRUD操作的RESTful服务,这在现代Web开发中是非常常见的需求。通过学习和实践这个示例,...

    Spring MVC实战系列教程(2)--常用请求参数接收方式

    本教程将深入探讨Spring MVC中常用的请求参数接收方式。通过实践案例`ParamPassDemo.java`,我们将了解到几种常见的方法,以便在控制器中获取用户提交的数据。 1. **路径变量(Path Variables)** 当URL路径中包含...

    spring注解开发

    `@PathVariable`用于获取URL模板变量的值,而`@RequestParam`则用于从查询参数或请求体中获取值。 除此之外,Spring Boot引入了更多简化开发的注解,如`@SpringBootApplication`,它结合了`@Configuration`、`@...

    使用 Spring MVC 读取用户信息、筛选字段

    这可以通过多种方式实现,例如,我们可以使用Java 8的Optional对象或者自定义的过滤器类。在UserService中,我们可以创建一个`getUserByFilter`方法,接受一个包含筛选条件的UserFilter对象: ```java public ...

    spring-framework-4.0.5

    Spring 4.0.5全面支持Java 8的新特性,包括Lambda表达式、Optional类、Date和Time API等,这使得开发者可以充分利用Java 8的新功能,编写更加简洁和高效的代码。 3. **反应式编程支持** 虽然Spring 4.0.5尚未完全...

    springboot集成mongodb增删改查功能源码

    在本文中,我们将深入探讨如何将Spring Boot框架与MongoDB数据库集成,以便实现全面的CRUD(创建、读取、更新、删除)功能。我们将以一个具体的实例——员工表为例,来阐述这一过程。 首先,我们需要理解Spring ...

    springboot && JPA实现增删改查demo

    public Optional&lt;Girl&gt; getGirlById(Long id) { return girlRepository.findById(id); } public void deleteGirlById(Long id) { girlRepository.deleteById(id); } } ``` 最后,在控制器层,我们创建`...

    cadastropessoas:Codigo paraaperfeiçoamentoCRUD comSprint Boot子

    public Optional&lt;Pessoa&gt; buscarPorId(@PathVariable Long id) { return pessoaRepository.findById(id); } // 更新记录 @PutMapping("/{id}") public Pessoa atualizar(@PathVariable Long id, @RequestBody...

    java8-spring5部分技术与工具介绍.pdf

    public User getUserById(@PathVariable Long id) { return userRepository.findById(id).orElse(null); } ``` ### Spring 5 集成 Velocity 虽然Spring 5官方已经不再支持Velocity作为模板引擎的一部分,但是...

    springboot+mybatis实现简单的单表增删改查

    &lt;optional&gt;true&lt;/optional&gt; ``` 接下来,配置数据库连接。在`application.properties`文件中,添加如下配置: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?...

    rest-service:WCCI模块9Spring指南RESTful Web服务练习

    public List&lt;User&gt; getUsers(@RequestParam Optional&lt;String&gt; name) { // 根据姓名查找用户 } ``` **五、数据转换与验证** Spring MVC通过`@RequestBody`和`@ResponseBody`注解自动进行JSON或XML数据的序列化和反...

    spring-data-cosmosdb:使用Azure Cosmos DB访问数据

    public Optional&lt;User&gt; getUserByName(@PathVariable String name) { return userService.getUserByName(name); } } ``` 以上就是使用Spring Data CosmosDB访问Azure Cosmos DB的基本流程。通过这种方式,开发者...

    springboot 文件上传下载

    &lt;optional&gt;true&lt;/optional&gt; &lt;!-- 使用H2数据库进行测试 --&gt; &lt;groupId&gt;com.h2database&lt;/groupId&gt; &lt;artifactId&gt;h2 &lt;scope&gt;runtime ``` 接着,我们需要配置文件存储的位置。在`application.properties`中...

    springboot实现文件上传下载.zip

    &lt;optional&gt;true&lt;/optional&gt; &lt;!-- 可选,用于文件上传 --&gt; &lt;groupId&gt;commons-fileupload &lt;artifactId&gt;commons-fileupload &lt;version&gt;1.4 &lt;groupId&gt;org.apache.tomcat.embed &lt;artifactId&gt;tomcat-embed-...

    SpringBoot在线代码修改器的问题及解决方法

    &lt;optional&gt;true&lt;/optional&gt; ``` 这里`optional`属性设为`true`,是为了避免在生产环境中包含这个依赖。 接下来,我们需要配置SpringBoot应用以支持热加载。在主类上添加`@EnableDevTools`注解: ```java @...

    spring-boot-upload-files:上载de arquivos

    public ResponseEntity&lt;StreamingResponseBody&gt; downloadFile(@PathVariable Long id) { Optional&lt;UploadedFile&gt; optionalFile = repository.findById(id); if (optionalFile.isPresent()) { UploadedFile file ...

Global site tag (gtag.js) - Google Analytics