【问题标题】:Issue with starting application Spring MVC + Grunt + JHipster + AngularJS启动应用程序 Spring MVC + Grunt + JHipster + AngularJS 的问题
【发布时间】:2015-06-30 05:30:40
【问题描述】:

我在使用 Maven 运行的 RESTful Web 应用程序中使用 Spring MVC。我有两个个人资料:

  1. 开发配置文件,在 hsql 和 oracle 上正常工作。我成功构建了我的应用程序,它运行良好。

  2. Production 配置文件,我在其中使用 Grunt Javascript 任务运行程序,用于缩小 Javascript、CSS 和 HTML 文件。

当我在“prod”配置文件中运行我的应用程序时,Maven 正在使用 Grunt 构建我的应用程序。 Grunt 做得很好,他根据 Gruntfile.js 中的配置更改了我的文件。文件已正确更改并保存在 dist 文件夹中,并使用新生成的 CSS 引用创建新的 index.html 文件em> 和 Javascript 文件。我成功构建了我的应用程序。

问题是,当我在http://localhost:8080 上启动我的应用程序时,我只从 dist 文件夹加载 cssjavascript 文件并制作调用 GET login,但我被困在这里(在 Firefox 浏览器中使用 Firebug):

没有对我的应用程序进行任何 REST 调用。当我在工作 dev 配置文件中启动应用程序时,第一次调用是针对 rest/authenticate,但在 prod 配置文件中,我永远不会到达那里。当我打开 spring 框架的日志时,我可以看到我的 AntPathRequestMatcher 在检查我的 favicon.ico 后卡住了,并且永远无法进入 rest/authenticate。好像我的 javascript 代码没有正确初始化,所以他可以进行 REST 调用?!

我认为我在 WebConfigrurer.javaSecurityConfiguration.javaDispatcherServletConfiguration.java 中正确地进行了配置...但我可以'不解决这个问题。

如果有人遇到类似问题,如果他/她能帮助我,我将不胜感激。谢谢。

【问题讨论】:

    标签: rest spring-mvc spring-security gruntjs jhipster


    【解决方案1】:

    是的,听起来您的 javascript 没有运行。 firebug 控制台中的任何错误?

    【讨论】:

    • 不,没有错误。 Firebug 控制台为空。我应该要求休息/验证并获取 en.json (翻译文件),但在那之前我被困住了。您是否知道可能是什么问题,因为我检查了 .java 配置、Gruntfile.js,并且一切似乎都正常?
    • 您的 SecurityConfiguration 是否过滤掉了您的 js 文件夹?即:@Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/images/**", "/js/**", "/css/**", "/fonts/ **"); }
    • 是的。在我的安全配置中,我有这些过滤器: web.ignoring().antMatchers("/bower_components/**").antMatchers("/fonts/**").antMatchers("/images/**").antMatchers( "/scripts/**").antMatchers("/styles/**").antMatchers("/i18n/**");
    • 如果我理解正确,grunt 会缩小您的文件并将它们存储在您的“dist”文件夹中以用于生产环境?所以 css 文件存储在 /dist/styles 中,javascript 文件存储在 /dist/scripts 中,等等?如果是这样,那么我认为您应该相应地更改 antMatchers。
    • 当我这样设置我的配置时: web.ignoring().antMatchers("/dist/bower_components/**").antMatchers("/dist/fonts/**").antMatchers( "/dist/images/**)".antMatchers("/dist/scripts/**)".antMatchers("/dist/styles/**").antMatchers("/dist/i18n/**") 我仍然有同样的问题。我无法加载在 dist 文件夹中创建的文件。
    【解决方案2】:

    很明显,script.js 的大小是 0 字节?! 你检查过内容吗?

    可能是,您的脚本可能不在两者之间(我假设您使用的是 Jhipster v1.X.X,因为您使用的是 script.js 而不是 app.js 和 vendor.js...)

        <!-- build:js scripts/scripts.js -->
    

         <!-- endbuild -->
    

    ?

    Grunt 只打包这两个标签之间的所有脚本

    【讨论】:

    • 嗨 eplog。我的脚本和 css 文件位于 index.html 中的构建标记之间。我检查了它。在 dist 文件夹中,我使用 Grunt 正确生成和更改了文件。但是当我运行我的应用程序时,它会调用 CSS 和 JS 生成的文件,但这些文件是空的(0B)。这些 REST 调用中没有响应(内容)。你知道可能是什么问题吗?文件已正确创建,但没有以正确的方式加载...
    • 您好,正确地说:您的 script.js 是空的(当您手动打开它时)还是它不是空的,只有 REST 调用是空的?!如果它是第一个,它的咕噜声,如果它是最后一个,我可以想象这是一个缓存问题
    • 第二个问题,REST调用为空。我总是在运行应用程序之前清除浏览器中的缓存。所以我认为这不是问题......
    • 嗨,eplog,我找到了问题的解决方案。这是缓存问题。我在 Spring MVC 配置中有一个名为 CachingInitHttpResponse 的类,我根据本文设置了一些缓存响应的参数:w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 感谢您回答我的问题,它帮助我解决了这个问题。问候
    • 嗨,很高兴听到您找到了解决方案!没来得及回答你之前的评论,不过我也猜到是服务器端缓存问题,而不是浏览器端缓存问题……
    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2018-02-11
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多