gpt4 book ai didi

java - @ResponseBody 返回空对象

转载 作者:行者123 更新时间:2023-12-01 14:16:43 30 4
gpt4 key购买 nike

当我使用下面来获取用户对象时,它工作得很好。

@GetMapping("/findOne") 
@ResponseBody
public Optional<AppUser> findOne (Long id) {
return appUserRepository.findById(id);
}
上面给了我一个回复:
{"id":1,"useruuid":"863db606-9af6-48a8-963a-07b9fe0fc4fc","useremail":"user1@mydomain.com"}
现在,我正在尝试使用以下方法基于 UUID(4) 进行搜索:
@GetMapping("/findOneUsingUUID") 
@ResponseBody
public AppUser findOne (String useruuid) {
return appUserRepository.findByUseruuid(useruuid);
}
这不会返回任何东西。没有错误,没有任何警告。虽然这给了我我需要的所有细节:
AppUser appUser = appUserRepository.findByUseruuid("863db606-9af6-48a8-963a-07b9fe0fc4fc");
System.out.println(" >>> " + appUser.getUseruuid());
System.out.println(" >>> " + appUser.getId());
System.out.println(" >>> " + appUser.getUseremail());
这是我的存储库中的内容
@Repository
public interface AppUserRepository extends JpaRepository<AppUser, Long> {
AppUser findByUseruuid(String useruuid);
和实体
@NotEmpty
@Column(name = "useruuid")
@GenericGenerator(name = "uuid", strategy = "uuid4")
private String useruuid;
问题:
为什么我的 Controller 方法 @GetMapping("/findOneUsingUUID")没有返回任何东西?任何相关信息/帮助/链接将不胜感激。
更新(对于 sidgate 的评论/问题):
我在另一个 Controller 方法中对此进行了测试。像这样:
@RequestMapping(value = { "tableusers" }, method = RequestMethod.GET)
public String listUsers(ModelMap model) {

AppUser appUser = appUserRepository.findByUseruuid("863db606-9af6-48a8-963a-07b9fe0fc4fc");
System.out.println(" >>> " + appUser.getUseruuid());
System.out.println(" >>> " + appUser.getId());
System.out.println(" >>> " + appUser.getUseremail());

String tableusers = "tableusers";
model.addAttribute("tableusers", tableusers);

List<AppUser> users = appUserService.findAllUsers();
model.addAttribute("users", users);
model.addAttribute("metaTitle", "All Users");
return "user_table_data_table";

}
更新 2:
现在我的 Controller 中有以下内容:
@RequestMapping(value = "/findOnebyId/{uuid}", method = RequestMethod.GET)
@ResponseBody
public AppUser findOneByUUID2(@PathVariable final String useruuid) {
return appUserRepository.findByUseruuid(useruuid);
}
所以我的 URL 变得类似于这样:
http://localhost:8080/findOnebyId?id=eeadf17f-13f2-4939-bab6-2534fcc1f4d4
但是现在我的浏览器控制台出现 404 错误。
更新 3:
根据戴尔的建议,我修复了它并将代码 checkin 到 github-repo .现在一切正常。

最佳答案

我根据你的 GitHub 代码尝试了这个,并且 API 通过 Postman 对我来说完美无缺。问题可能与您调用 API 的方式有关。
在评论部分,您提到您将值作为路径变量传递给 Controller ​​。但是您还没有添加 @PathVariable Controller 方法中的注解。所以 Controller 方法需要一个查询参数,而不是一个路径变量。请尝试通过传递 UUID 作为参数来调用 API。
编辑
查看您的 GitHub 代码,您将 API 调用为 url: "/findOnebyId?id="+ id .

@GetMapping("/findOnebyId")
@ResponseBody
public AppUser findOneByUUID(String useruuid) {
return appUserRepository.findByUseruuid(useruuid);
}
在这个 Controller 方法中,你期待 useruuid作为查询参数。但是在您的 datatables.html 文件中,您将查询参数发送为 id .
所以你可以删除 @PathVariable注释并更正 AJAX 请求中的查询参数名称。

关于java - @ResponseBody 返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62688472/

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