我希望在客户端使用AngularJS,在服务器端使用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>
现在,路由逻辑可能如下:
angular.module('myApp', [])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', {templateUrl: 'pages/pageOne.html'})
.when('/someSpecific', {templateUrl: 'pageTwo.html'})
.otherwise({redirectTo: '/'});
}
]);
问题是,我该如何将此与Java EE和Wildfly服务器实例配对?如果我仅声明
index.html
为欢迎页并且不做其他任何操作,则直接调用,例如http:// website.org/someSpecificContext
将失败,因为没有页面映射到路径(也不应该有),因此不会加载任何页面和Angular代码。如果我通过servlet过滤器从每个可能的子路径重定向到index.html,则路径信息将丢失,因此每个调用都将结束在索引页面。也许这是一个愚蠢的新手问题,但我真的被卡住了,并且会感激任何帮助。
html5Mode
,因此您所有的Angular路径都会有一个#
,并且不会对服务器产生任何影响。只有在使用html5Mode
并且使用漂亮的URL而没有#
时,您才需要配置服务器。以任何您想要的方式提供模板即可。 - charlietflhtml5mode
,为了代码简洁性,我没有包含它。我将更新问题,以减少对AngularJS主题的关注。 - hoefling