#java #jax-ws #resteasy
#java #jax-ws #легко восстановить
Вопрос:
Допустим, у меня есть это (это всего лишь пример):
@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/address?user=amir, все работает, но идея в том, что если я не указываю значение для user, то я хочу, чтобы использовался DEFAULT_USER . Но на самом деле это не вызывает valueOf. Есть ли способ это исправить?
Комментарии:
1. Основываясь на коде, который вы предоставляете, и документах для «defaultValue», если пользователь не присутствует в URL, ему присваивается значение null. Однако создается впечатление, что вы ожидаете, что метод valueOf будет вызван с параметром (String) null, что не соответствует тому, как работает пропуск «defaultValue».
Ответ №1:
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);
}
}
Комментарии:
1. Как это мне помогает? Если пользователь отсутствует, то я хочу DEFAULT_USER. В вашем коде по умолчанию используется «amir»
2. именно этим я сейчас и занимаюсь. Я надеялся на лучшее решение. Но я думаю, этого хватит.