【问题标题】:SpringData: How Map AngularJS page with @RepositoryRestResource?Spring Data:如何使用 @RepositoryRestResource 映射 AngularJS 页面?
【发布时间】:2023-03-21 13:44:01
【问题描述】:

我遵循有关数据访问的本教程: http://spring.io/guides/gs/accessing-data-rest/

所以,我有这个结构

http://i.stack.imgur.com/wUnrx.png

“项目”是模型

package Serveur;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    private String name;
    private String mail;
    private String password;

    public long getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

还有接口“ProjectRepository”,直接通过“@RepositoryRestResource”注解实现

打包服务器;

import java.util.List;

import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@RepositoryRestResource(collectionResourceRel = "jsonProjects", path = "jsonProjects")
public interface ProjectRepository extends CrudRepository<Project, Integer> {

    List<Project> findById(@Param("name") String name);

}

“主控制器”包含一个 @RequestMapping 注释并将用户重定向到“索引”页面:

package Serveur;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HomeController {
    @RequestMapping("/")
    public String index()
    {
        return "index";
    }
}

但是,当我连接到 localhost:8080/ 时,索引页面不显示,但是:

{
   _links: {
     jsonProjects: {
         href: "http://localhost:8080/jsonProjects{?page,size,sort}",
         templated: true
     }
   }
}

【问题讨论】:

    标签: spring spring-mvc spring-data


    【解决方案1】:

    问题是@RepositoryRestResource 注解绑定到“/”。要解决您的问题,请编辑 Application.java 并添加此函数:

    @Override
          protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
            super.configureRepositoryRestConfiguration(config);
            try {
              config.setBaseUri(new URI("/api"));
            } catch (URISyntaxException e) {
              e.printStackTrace();
            }
          }
    

    您的 HomeController 不会绑定到“/”,您的 API 将在“/api”中可用

    【讨论】:

      【解决方案2】:

      答案如下:

      默认情况下,所有存储库搜索功能都在搜索关键字之后。因此,在您的情况下,URL 将类似于:
      http://localhost:PORT/APP/jsonProjects/search/findById?name=NAME

      请参阅我的工作示例和博客:
      http://sv-technical.blogspot.com/2015/11/spring-boot-and-repositoryrestresource.html
      https://github.com/svermaji/Spring-boot-with-hibernate-no-controller

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2016-04-17
        • 2014-08-25
        • 2019-10-02
        • 2019-02-27
        • 2019-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-21
        相关资源
        最近更新 更多