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 或 field 之前出现,它将生效。相对于附带的注入注解的 @DefaultValue
注释的位置无关紧要。
@DefaultValue
注释采用单参数。如果无法根据注入注解提取正确的数据,则此参数是注入到字段的值。该值可以是任何 String
值。该值应该与关联字段的类型兼容。例如,如果关联字段类型为 int
,则默认值 blue
除外。
处理列表和集合
如果注解的参数的类型,bean 或 field 为 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
请求会用其中一个 ID 返回 Fomóiri。
由于 @DefaultValue
注释放在这两个参数上,因此如果省略了查询参数,getMonster ()
方法可以发挥作用。发送到 baseURI/monster 的
请求等同于使用 URI baseURI/monster?id=42&type=bogeyman 的 GET 请求。
GET