47.2.5. 指定要注入的默认值
概述
要为更可靠的服务实现提供,您可能需要确保将任何可选参数设置为默认值。这在输入长 URI 字符串以来从查询参数和列表参数中获取的值特别有用。您可能还想为从 cookie 中提取的参数设置默认值,因为请求的系统可能没有正确的信息来构造带有所有值的 cookie。
javax.ws.rs.DefaultValue
注解可以和以下注入注解结合使用:
-
@PathParam
-
@QueryParam
-
@MatrixParam
-
@FormParam
-
@HeaderParam
-
@CookieParam
@DefaultValue
注释指定在请求中不存在与注入注释对应的数据时将使用的默认值。
语法
设置参数的默认值的语法 显示使用 @DefaultValue
注释的语法。
设置参数的默认值的语法
import javax.ws.rs.DefaultValue; ... void resourceMethod(@MatrixParam("matrix") @DefaultValue("value) int someValue, ... ) ...
该注释必须在参数、bean 或 字段之前使用,它将起作用。相对于带注入注解的 @DefaultValue
注释的位置无关紧要。
@DefaultValue
注释使用一个参数。此参数是根据注入注解提取正确的数据,则将注入字段的值。该值可以是任意 String
值。该值应当与关联字段的类型兼容。例如,如果关联的字段是 int
,则默认值 blue
会导致异常。
处理列表和集合
如果注解参数的类型,an 或字段是 List、Set 或 SortedSet,则生成的集合将具有从提供的默认值映射的单个条目。
示例
设置默认值 显示使用 @DefaultValue
为注入值的字段指定默认值的两个示例。
设置默认值
import javax.ws.rs.DefaultValue; import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.GET; import javax.ws.rs.Path; @Path("/monster") public class MonsterService { @Get public Monster getMonster(@QueryParam("id") @DefaultValue("42") int id, @QueryParam("type") @DefaultValue("bogeyman") String type) { ... } ... }
当 GET
请求发送到 baseURI/monster 时,调用 设置默认值 中的 getMonster()
方法。这个方法需要两个查询参数,即 id
和 type
,并附加到 URI。因此,使用 URI baseURI/monster?id=1&type=fomóiri 的 GET
请求会返回 Fomóiri,其 ID 为 1。
由于 @DefaultValue
注释都放在这两个参数上,因此如果查询参数被省略,则 getMonster()
方法可以正常使用。发送到 baseURI/monster 的
请求等同于使用 URI baseURI/monster?id=42&type=bogeyman 的 GET 请求。
GET