Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Angularjs Spring Boot web应用程序中的角度路由_Angularjs_Spring Boot_Angularjs Routing - Fatal编程技术网

Angularjs Spring Boot web应用程序中的角度路由

Angularjs Spring Boot web应用程序中的角度路由,angularjs,spring-boot,angularjs-routing,Angularjs,Spring Boot,Angularjs Routing,我正在开发一些使用角度和弹簧靴的项目,我遇到了一些令人困惑的情况: 我有Spring控制器与我的应用程序共享视图文件名 @Controller public class OfferViewController { @RequestMapping(value = "/addOffer", method = RequestMethod.GET) public String addView() { return "html/offer/addOffer"; }

我正在开发一些使用角度和弹簧靴的项目,我遇到了一些令人困惑的情况:

我有Spring控制器与我的应用程序共享视图文件名

@Controller
public class OfferViewController {

    @RequestMapping(value = "/addOffer", method = RequestMethod.GET)
    public String addView() {
        return "html/offer/addOffer";
    }

    @RequestMapping(value = "/showOffer/{offerId}")
    public String showOffer(@PathVariable("offerId") String offerId){
        return "html/offer/showOffer";
    }
}
我还有其他一些控制器来处理REST调用:

@RestController
public class OfferRestController {

    private OfferRepository offerRepository;

    @Autowired
    public OfferRestController(OfferRepository offerRepository) {
        this.offerRepository = offerRepository;
    }

    @RequestMapping(value = "/showOfferJson/{offerId}", method = GET, produces = APPLICATION_JSON_VALUE)
    public Offer showOffertest(@PathVariable("offerId") String offerId) {
        Offer offer = offerRepository.findOne(offerId);
        return offer;
    }

    @RequestMapping(value = "/saveOffer", method = POST)
    public ResponseEntity<Offer> saveOffer(@RequestBody Offer offer) {
        Offer offerSaved = offerRepository.save(offer);
        return new ResponseEntity<Offer>(offerSaved, HttpStatus.OK);
    }
}
@RestController
公共类报价控制器{
私人要约收购;
@自动连线
公开要约控制人(要约人要约人){
this.offerepository=offerepository;
}
@RequestMapping(value=“/showOfferJson/{offerId}”,method=GET,products=APPLICATION\u JSON\u value)
公开发售showOffertest(@PathVariable(“offerId”)字符串offerId){
Offer Offer=offerepository.findOne(offerId);
还盘;
}
@请求映射(value=“/saveOffer”,method=POST)
公共响应性saveOffer(@RequestBody Offer){
Offer offerSaved=offerepository.save(Offer);
返回新的响应状态(offerSaved,HttpStatus.OK);
}
}
我使用angular来开发我的UI

当我开始阅读angular(单页应用程序)中的路由可能性时,我发现自己很困惑,因为我认为我不再需要OfferViewController了

我的问题是:

  • 我应该有一个index.html页面来管理所有ng路由吗? 例如,ngRoute first to addOffer.html,second to contact.html等

  • 我是否仍然需要控制器为我的起始页提供所有NGRouting

  • Mby我错了,所以请给我一个如何做对的建议


  • 谢谢你的帮助

    让我们从以下内容开始:什么是单页应用程序?

    单页应用程序是由一个HTML页面组成的页面。因此,只有一个HTML文件从后端请求,其余的路由应该由前端管理。 对于单页应用程序的更详细的示例,我确信在web上有很多关于这方面的信息

    AngularJS的路由是如何工作的?

    到不同路线的角度路径位于“#”之后。因此,它们位于url的片段部分,而这部分不会传输到服务器。因此,没有必要在后端使用@Controller来服务不同的html

    要根据当前路由显示不同的内容,可以指定控制器和partial.html文件,这些文件应显示在所需的路由上

    phonecatApp.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
      when('/phones', {
        templateUrl: 'partials/phone-list.html',
        controller: 'PhoneListCtrl'
      }).
      when('/phones/:phoneId', {
        templateUrl: 'partials/phone-detail.html',
        controller: 'PhoneDetailCtrl'
      }).
      otherwise({
        redirectTo: '/phones'
      });
    }]);
    
    这个代码示例是最新的。它显示了如何指定路由以及应在此路由上显示哪些内容

    此代码段告诉angular将部分HTML文件包含到使用
    ng view
    指令的每个元素中

    所以你的index.html看起来像这样(同样是从

    
    
    如果您访问
    yourdomain.com/#/phones
    现在它会加载index.html,并将文件“/partials/phone list.html”中包含的html包含到使用
    ng view
    -指令的div中

    什么是休息?

    我想没有人知道这个问题的确切答案,但你所做的绝对不是休息。这只是HTTP调用。您的端点看起来像RPC。
    第一步可以是使用接受GET请求的endpoint/offers/{id}和接受POST请求的endpoint/offers。如果您想提供一种方法,一次公开所有服务,请添加一个端点/服务,该端点/服务接受GET请求。

    您不需要像现在这样处理路由。但是,如果这个控制器允许HTML5路由,通过对每个请求(CSS、JS、图像等静态文件除外)的登录页进行响应,那就更好了。我希望我回答了你所有的问题。如果你有更多的问题,请在回答下发表评论。请参考“谢谢你的回复”,并突出说明它应该如何工作。如果你有时间,请看我的另一个问题,我会看一看。如果你的项目可以在github上使用,那么很高兴能获得它的链接,这样我就可以让它工作,并将它作为我的示例之一上传到我的github帐户上(简化为基本内容,以演示带有spring boot后端的angularJS应用程序)。。但是很好的解释
    <!doctype html>
    <html lang="en" ng-app="phonecatApp">
    <head>
      <script src="bower_components/angular/angular.js"></script>
      <script src="bower_components/angular-route/angular-route.js"></script>
      <script src="js/app.js"></script>
      <script src="js/controllers.js"></script>
    </head>
    <body>
    
      <div ng-view></div>
    
    </body>
    </html>