Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring控制器中搜索的方法不起作用_Java_Html_Jpa_Model View Controller - Fatal编程技术网

Java 在Spring控制器中搜索的方法不起作用

Java 在Spring控制器中搜索的方法不起作用,java,html,jpa,model-view-controller,Java,Html,Jpa,Model View Controller,请帮助解决搜索中的问题 在Spring控制器中搜索的方法不起作用 出现意外错误(类型=内部服务器错误,状态=500)。 找不到类型用户的属性用户! org.springframework.data.mapping.PropertyReferenceException:找不到类型user的属性用户 当我尝试按用户名搜索用户时,我遇到一个错误,它引用了UserService中的一行: 返回userRepo.findByUsername(搜索,可分页) 用户报告: public interface U

请帮助解决搜索中的问题

在Spring控制器中搜索的方法不起作用

出现意外错误(类型=内部服务器错误,状态=500)。 找不到类型用户的属性用户! org.springframework.data.mapping.PropertyReferenceException:找不到类型user的属性用户

当我尝试按用户名搜索用户时,我遇到一个错误,它引用了UserService中的一行:

返回userRepo.findByUsername(搜索,可分页)

用户报告:

public interface UserRepo extends CrudRepository<User, Long> {
User findByUsername(String username);

User findByActivationCode(String code);

Page<UserDto> findAll(Pageable pageable);

Page<UserDto> findByUsername(@Param("username") String search, Pageable pageable);
控制器:

@GetMapping("/users")
public String readAllUsers(
        @RequestParam(required = false, defaultValue = "") String search,
        @PageableDefault(sort = {"id"}, direction = Sort.Direction.DESC) Pageable pageable,
        Model model) {
    Page<UserDto> page = userService.userList(pageable, search);
    model.addAttribute("url", "/admin/users");
    model.addAttribute("page", page);
    model.addAttribute("search", search);
    model.addAttribute("roles", Role.values());
    return "adminUsers";
}
@GetMapping(“/users”)
公共字符串读取器(
@RequestParam(必需=false,defaultValue=“”)字符串搜索,
@PageableDefault(sort={“id”},direction=sort.direction.DESC)pageablepageable,
(模型){
Page=userService.userList(可分页,搜索);
model.addAttribute(“url”,“/admin/users”);
model.addAttribute(“页面”,第页);
model.addAttribute(“搜索”,搜索);
model.addAttribute(“角色”,Role.values());
返回“adminUsers”;
}
表格:



全文错误:

您的存储库正在与
用户
协作,它无法返回
页面
。。。仅限
页面
。存储库返回后,您需要将
User
映射到
UserDto

替换为Page,而不是这个:Page。

您能写得更详细一点吗?我只是在学习Spring,我不太明白。有必要将Dto完全转移到页面,这是不可能的(将返回类型更改为
page
。如何将Dto返回?可以。
public class UserDto {
    private Long id;
    private String firstname;
    private String lastname;
    private String username;
    private String email;
    ...

    public UserDto(User user) {
        this.id = user.getId();
        this.firstname = user.getFirstname();
        this.lastname = user.getLastname();
        this.username = user.getUsername();
        this.email = user.getEmail();
        ...
    }... + getters
@GetMapping("/users")
public String readAllUsers(
        @RequestParam(required = false, defaultValue = "") String search,
        @PageableDefault(sort = {"id"}, direction = Sort.Direction.DESC) Pageable pageable,
        Model model) {
    Page<UserDto> page = userService.userList(pageable, search);
    model.addAttribute("url", "/admin/users");
    model.addAttribute("page", page);
    model.addAttribute("search", search);
    model.addAttribute("roles", Role.values());
    return "adminUsers";
}
<form action="/admin/users" method="get" class="d-flex justify-content-center">
            <!-- Default input -->
            <input type="search" name="search" value="${search?ifExists}"
                   placeholder="Enter you query" aria-label="Search" class="form-control">
            <button class="btn btn-primary btn-sm my-0 p" type="submit">
                <i class="fas fa-search"></i>
            </button>

        </form>