hoe*_*ing 3 java-ee angularjs single-page-application wildfly
我想在客户端编写一个带AngularJS的SPA,在服务器端编写Java EE.如果我理解正确,前端的想法是创建一个默认页面(让我们称之为index.html)并实现路由以交换此默认页面的部分.因此,对于每个请求,都会加载默认页面,并且路由逻辑会根据上下文路径替换其部分:
<!-- index.html -->
<html>
<body>
<!-- this block is replaced depending on context -->
<div ng-view></div>
</body>
</html>
<!-- page one -->
<div>
<h1>Page One</h1>
<a href="/specific">Some specific stuff</a>
</div>
<!-- page two -->
<div>
<h1>Page Two</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
现在,路由逻辑可能是这样的:
angular.module('myApp', [])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', {templateUrl: 'pages/pageOne.html'})
.when('/someSpecific', {templateUrl: 'pageTwo.html'})
.otherwise({redirectTo: '/'});
}
]);
Run Code Online (Sandbox Code Playgroud)
问题是,如何将其与Java EE和Wildfly服务器实例相结合?如果我声明index.html为欢迎页面http://website.org/someSpecificContext而不执行任何其他操作,则直接调用将失败,因为没有页面映射到路径(并且不应该),因此不会加载页面和角度代码.如果我在servlet过滤器中从每个可能的子路径重定向到index.html,那么路径信息将丢失,因此每个调用都将在索引页面中结束.也许这是一个愚蠢的新手问题,但我真的被困在这里,并会感谢任何帮助.
我个人使用了底部重写处理程序.遗憾的是,没有很多关于此功能的文档.你可以找到的信息在这里也是在这里.你必须基本上重写那些只有Angular知道的html 5 url,但是当Angular请求后端数据时你必须用你的服务器端REST组件(我想你正在使用REST)做出响应.我的REST资源位于/api根路径下.这是要放在文件夹中的undertow-handlers.conf文件的示例WEB-INF:
regex['(.*/order/?.*?$)'] and not regex['(.*/api.*)'] -> rewrite['/index.html']
regex['(.*/billing/?.*?$)'] and not regex['(.*/api.*)'] -> rewrite['/index.html']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2346 次 |
| 最近记录: |