【问题标题】:AnjularJs integration with Spring bootAngularJs 与 Spring 启动的集成
【发布时间】:2017-03-28 23:46:38
【问题描述】:

我需要在 java 类中调用index() 方法。但是我试过这种方法它不起作用。

在 http 路径无法识别之后,它会上升到 controller.js 中的 console.log('coming here....');

@RestController
public class DatumBoxShedule {

    @Autowired
    private DatumService datumService;

    @RequestMapping(value = "/loadIndex", produces = MediaType.APPLICATION_JSON_VALUE,  method = RequestMethod.GET)
    public String index() throws IOException {

    }
}

controller.js

app.controller('datumBoxShedule', function($scope, $http) {
    $scope.newTodo = {};

    $scope.loadIndex = function(){
         console.log('coming here....');
        $http.get('loadIndex')
        .success(function(data, status, headers, config) {
            $scope.todos = data;
         })
        .error(function(data, status, headers, config) {
              alert('Error loading DatumBoxShedule');
        });
    };

    $scope.loadIndex();
});

【问题讨论】:

  • 尝试检查状态码,可能是 404,这意味着您需要提供绝对路径:$http.get('/loadIndex')...。您可以直接从浏览器访问 Rest API 端点,也可以使用 Postman 等浏览器扩展来检查请求/响应。
  • 我尝试了 $http.get('/loadIndex') 但仍然出现同样的错误。
  • 后端 REST 服务的基本上下文是什么?通常你会有类似http://host:port/*myApp*/loadIndex
  • 我的上下文是localhost:8080/loadIndex

标签: java angularjs spring hibernate


【解决方案1】:

Angular 项目是 Spring 项目的一部分吗?

其他映射是否正常工作(换句话说:REST 服务是否正在运行)? 如果没有:您的依赖项中是否有像 Tomcat 这样的嵌入式容器?

例如,您可以将 Tomcat 的依赖项添加到您的项目中:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

【讨论】:

  • 能否提供浏览器调试控制台的错误信息?
【解决方案2】:

我发现,问题不在 anujularjs 中。问题在春天。

我的组件扫描不工作

package main.java.datumbox;

@配置 @SpringBootApplication @EnableAutoConfiguration(排除 = { DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class}) @ComponentScan({"main.java.datumbox.service.impl","main.java.datumbox.controller","main.java.datumbox.service"}) 公共类应用程序{

public static void main(String[] args) throws Exception {

    SpringApplication.run(Application.class,args);

}

}

包 main.java.datumbox.service.impl;

公共类 DatumServiceImpl{

@Autowired(required = true)
DatumDataRepository datumDataRepository;

}

包 main.java.datumbox.controller;

@RestController 公共类 DatumBoxController {

@Autowired
private DatumService datumService;

@Autowired
private DatumServiceImpl datumServiceImpl;


@RequestMapping( value = "/loadIndex" , produces = MediaType.APPLICATION_JSON_VALUE,  method = RequestMethod.GET)
public String index() throws IOException {

}

}

包 main.java.datumbox.service;

@服务 公共类 DatumService{

@Autowired
HitApiService hitApiService;

}

错误来了..


应用程序启动失败


说明:

main.java.datumbox.controller.DatumBoxController 中的字段 datumServiceImpl 需要找不到类型为“main.java.datumbox.service.impl.DatumServiceImpl”的 bean。

行动:

考虑在你的配置中定义一个“main.java.datumbox.service.impl.DatumServiceImpl”类型的bean。

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 1970-01-01
    • 2012-12-31
    • 2016-02-17
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多