2011-04-12 14 views
3

比方说,我有这样的(这只是一个示例):用默认值的Java JAX-RS自定义参数

@GET 
@Path(value="address") 
@Produces("application/json") 
public Response getAddress(@QueryParam("user") User user){ 
    ... 
} 

和用户是

class User{ 
... 
public static User valueOf(String user){ 
    if(user == null) return DEFAULT_USER; 
    return dao.findById(user); 
}  
} 

如果我做/API /地址?用户= amir一切正常,但想法是如果我不提供用户的价值,那么我想使用DEFAULT_USER。但是这实际上并没有调用valueOf。有没有办法来解决这个问题?

+0

根据您提供的代码,而对于“默认值”的文档,如果用户不存在的URL,它被分配给空。尽管你期望用参数(String)为null来调用valueOf方法,但这不是“DefaultValue”省略的方式。 – arjacsoh 2014-11-18 08:53:15

回答

6

JAX-RS有@DefaultValue注释:

@QueryParam("user") @DefaultValue("__DEFAULT") 



class User{ 
... 
public static User valueOf(String user){ 
    if(user == null||"__DEFAULT".equals(user) return DEFAULT_USER; 
    return dao.findById(user); 
}  
} 
+0

这对我有帮助吗?如果用户缺少,那么我想要DEFAULT_USER。你的代码默认使用“amir” – 2011-04-13 01:39:02

+0

我已经用一个更好的例子编辑了我的答案。 – 2011-04-13 05:31:15

+1

这就是我现在正在做的事情。我希望有更好的解决方案。但我想这会做。 – 2011-04-13 15:00:01