【问题标题】:Spring Roo 2.0.0.RC1: If i use my new language Addon in clinic example i get long stacktraceSpring Roo 2.0.0.RC1:如果我在诊所示例中使用我的新语言插件,我会得到很长的堆栈跟踪
【发布时间】:2017-03-08 11:27:57
【问题描述】:

测试新的语言插件

我现在有德语语言插件,并在诊所示例中使用 ist。

安装新的语言插件后我设置了

web mvc language --code de --useAsDefault in clinic.roo 

之前

web mvc language --code es

当我启动应用程序时,一切都是德语。但是在我启动应用程序的命令 shell 中,会出现很长的堆栈跟踪。

2017-03-08 12:00:53.176 ERROR - QP: - 9544 --- [nio-8082-exec-2] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-8082-exec-2] Exception processing template "index": An error happened during template parsing (template: "class path resource [templates/index.html]")

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/index.html]")
        at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:667) ~[thymeleaf-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1087) [thymeleaf-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1061) [thymeleaf-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.thymeleaf.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:335) [thymeleaf-spring4-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.thymeleaf.spring4.view.ThymeleafView.render(ThymeleafView.java:189) [thymeleaf-spring4-3.0.0.RELEASE.jar:3.0.0.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1257) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
...

stacktrace 中只有一个简短的 sn-p。 然后我切换到西班牙语或英语没有堆栈跟踪。 当我切换回德语时,会发生堆栈跟踪。 为什么?怎么了?

我在 northwind-multimodule 中测试新语言并获取堆栈跟踪 当我切换到德语并且菜单不起作用之后。我可以添加 url 参数 lang=en 然后菜单再次工作。

另外备注:

在德语中切换语言的标签所有标签都可以(我已将它们放在 message_de.properties 中),但在西班牙语或英语中,德语标签不行。

在消息属性中没有用于德语的 language_Label 属性,因为在 I18N 插件中,消息属性没有用于德语的 language_Label。 该插件现在与其他语言无关。 我已经手动添加了这些条目,然后一切正常。

好的,我只使用普通的 message.properties 进行测试,并将名称更改为 message_de.properties。 然后构建新插件,并在临床示例中使用该语言并获取堆栈跟踪:

2017-03-16 12:48:26.179  WARN - QP: - 6104 --- [nio-8082-exec-4] o.s.w.s.r.WebJarsResourceResolver
      : WebJar version conflict for "momentjs/locale/de.js"

org.webjars.MultipleMatchesException: Multiple matches found for locale/de.js. Please provide a more
 specific path, for example by including a version number.
        at org.webjars.WebJarAssetLocator.getFullPath(WebJarAssetLocator.java:259) ~[webjars-locator
-core-0.30.jar:na]
        at org.webjars.WebJarAssetLocator.getFullPath(WebJarAssetLocator.java:200) ~[webjars-locator
-core-0.30.jar:na]
        at org.springframework.web.servlet.resource.WebJarsResourceResolver.findWebJarResourcePath(W
ebJarsResourceResolver.java:108) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.resource.WebJarsResourceResolver.resolveResourceInternal(
WebJarsResourceResolver.java:79) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.resource.AbstractResourceResolver.resolveResource(Abstrac
tResourceResolver.java:46) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.resource.DefaultResourceResolverChain.resolveResource(Def
aultResourceResolverChain.java:57) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.resource.CachingResourceResolver.resolveResourceInternal(
CachingResourceResolver.java:78) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.resource.AbstractResourceResolver.resolveResource(Abstrac
tResourceResolver.java:46) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.resource.DefaultResourceResolverChain.resolveResource(Def
aultResourceResolverChain.java:57) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.getResource(ResourceH
ttpRequestHandler.java:432) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(Resourc
eHttpRequestHandler.java:333) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAd
apter.java:51) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
[spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) [
spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970
) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) [spring
-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) [tomcat-embed-core-8.5.5.jar
:8.5.5]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spri
ng-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) [tomcat-embed-core-8.5.5.jar
:8.5.5]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:230) [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-webs
ocket-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:192) [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilterInternal(Resou
rceUrlEncodingFilter.java:53) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:10
7) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:192) [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:
208) [spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) [sp
ring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy
.java:346) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:
262) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:192) [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter
.java:99) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:10
7) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:192) [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormConte
ntFilter.java:89) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:10
7) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:192) [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFi
lter.java:77) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:10
7) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:192) [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncoding
Filter.java:197) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:10
7) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:192) [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
 [tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [tomc
at-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) [tomc
at-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) [t
omcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-emb
ed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embe
d-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-
embed-core-8.5.5.jar:8.5.5]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) [tomcat-embed
-core-8.5.5.jar:8.5.5]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784) [tomcat-embed-
core-8.5.5.jar:8.5.5]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-
embed-core-8.5.5.jar:8.5.5]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802) [
tomcat-embed-core-8.5.5.jar:8.5.5]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) [tomc
at-embed-core-8.5.5.jar:8.5.5]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-e
mbed-core-8.5.5.jar:8.5.5]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0
_121]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0
_121]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomca
t-embed-core-8.5.5.jar:8.5.5]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]

【问题讨论】:

  • 您能否提供更具体的堆栈跟踪以检查错误?问候,
  • 我在里面放了更多的堆栈跟踪,但我不能把它包含的整个堆栈跟踪放到更多的字符中。
  • 我现在有一个问题。当我无法将语言更改为德语时,javax.validation.constraints.NotNull.message 以英语出现,我无法在 message.properties 中覆盖。
  • 您好,有人可以帮忙解决这个问题吗?
  • 如果您可以发布或提供您生成的德语插件以便能够对其进行测试并尝试找出问题的原因,那将非常有帮助。如果您能提供您创建的项目或至少提供 log.roo 文件,那就更好了。

标签: spring-roo


【解决方案1】:

您似乎在语言不是英语或西班牙语时由 Roo 生成的 Thymeleaf 布局以及 moment.js 库的 webjar 中发现了问题。

要解决这个问题,您必须在文件夹 src/main/resources/templates/layouts 中编辑项目中生成的布局并找到以下行:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/locale/es.js" data-th-src="@{/webjars/momentjs//locale/}+ ${#locale.language}+'.js'" data-th-if="${#locale.language} != 'en' and ${#locale.language} != 'es'">
  </script>

moment.js webjar 似乎包含所有与语言环境相关的文件的两个副本,webjars 解析器找到了它们,但不知道使用哪一个。要解决它,必须使用带有 webjar 版本的路径。 URL 的格式也不正确。用这个替换之前的片段:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/locale/es.js" data-th-src="@{/webjars/momentjs/2.13.0/locale}+ '/' + ${#locale.language}+'.js'" data-th-if="${#locale.language} != 'en' and ${#locale.language} != 'es'">
  </script>

【讨论】:

  • 你好谢谢你我会测试它
猜你喜欢
  • 1970-01-01
  • 2014-03-30
  • 2020-12-03
  • 1970-01-01
  • 2023-03-16
  • 2012-05-15
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多