gpt4 book ai didi

java - JAX-RS boolean 值与整数

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:21 25 4
gpt4 key购买 nike

我有一个采用 boolean 值的方法

@GET
@Path("/updatePassword/{userid}/{password}/{resetTemporary}")
@Produces(MediaType.APPLICATION_JSON)
public boolean updatePassword(@PathParam("userid") String userid, @PathParam("password") String password, @PathParam("resetTemporary") boolean resetTemporary) {
boolean result = false;
if (!StringUtilities.stringEmptyOrNull(userid, password)) {
result = factory.updatePasssword(userid, password, resetTemporary);
logger.info("Updated user password for user " + userid+ " Action completed = " + result);
}
return result;
}

经过一些测试/尝试后,在我的网址中,我实际上可以传递一个 int 而不是 boolean 值。有趣的是,无论我传递的是 1 还是 0,它返回的结果仍然是 false。

这是因为该值无法识别,因此默认为 false,如果是这样,如何强制调用者使用 true/false 表达式?

谢谢

最佳答案

经过一些测试后,似乎将 1 传递到 resetTemporary (或类似的 boolean 字段)将始终导致 false,无论您使用 @PathParam 还是 @QueryParam

要强制调用者使用“true/false”表达式,您可能需要将参数更改为 String 并放入需要 “true”“false” 的验证代码,并在发生其他情况时抛出错误。

更新:想到了一些其他可能性。

  • 我在上面提到了一个String,但它不一定是一个字符串。您可以从中收集所需信息的任何类型都可以。
  • 您还可以将 REST 方法拆分为两个方法(例如,updatePasswordresetPassword,根据您的变量名称)。这两种方法可能非常相似,并且调用相同的辅助方法,但每个方法都会知道 resetTemporary 参数的值,并能够采取相应的操作。

我个人更倾向于第二种方法。 boolean 参数通常表明一个方法正在执行两个独立的(尽管可能非常相似)的事情。将它们一分为二可以确保每个方法只做一件事,并从每个方法中删除一个参数 resetTemporary,从而降低复杂性。

关于java - JAX-RS boolean 值与整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25185115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com