背景信息:我是一名法国开发人员,正在一个团队中开发基于JHipster的众筹平台。
在JHipster中,访问http://domain.com/unknown时,检索到的页面是服务器端错误页面。
我想知道的是:-百里香如何知道它必须返回error.html?-参数来自何处以及如何获取,特别是对于像in这样的变量
<span th:text="${error}">
->错误从何而来(状态和消息相同)?某处是否有某种服务器端控制器?
另一个必然的问题是:为什么jhipster,一个客户端和一个服务器中有2个错误页面?不应该只有一个客户端页面,因为JHipster适用于SPA。为什么服务器不总是发送回index.html,让客户端测试是否有错误?
最后一个问题也是必然的:是否有某种方法可以在客户端(角度)路由(在app.js文件中)中请求动态服务器端(thymeleaf)模板。这对于开发丰富的SPA非常有用。
PS:谢谢朱利安(Julien)的工作
我想知道的是:-百里香如何知道它必须返回error.html?
两部分。首先,将Spring配置为将Thymeleaf用于所有服务器侧视图。在JHipster中,应用程序的注释如下:
@ComponentScan
@EnableAutoConfiguration(exclude = {MetricFilterAutoConfiguration.class, MetricRepositoryAutoConfiguration.class})
public class Application {
这@EnableAutoConfiguration
是了解Thymeleaf设置方式的关键。它触发ThymeleafAutoConfiguration,后者创建Thymeleaf视图解析器等。请注意,JHipster有一个ThymeleafConfiguration
类,但这仅用于电子邮件,与您的问题无关。
第二部分... Spring Boot使用“ /错误”作为默认错误视图。从文档:
Spring Boot默认提供一个/ error映射,以一种明智的方式处理所有错误,并且在servlet容器中被注册为“全局”错误页面。对于机器客户端,它将生成JSON响应,其中包含错误,HTTP状态和异常消息的详细信息。对于浏览器客户端,有一个“ whitelabel”错误视图以HTML格式呈现相同的数据(要对其进行自定义,只需添加一个解析为“错误”的视图)。
解决错误视图时,Spring将为您正在使用的视图解析器添加正确的后缀(我描述的第一部分)。例如,.html代表Thymleaf,.vm代表Velocity,或.ftl代表Freemarker。
某处是否有某种服务器端控制器?
是的。JHipster也正在使用Spring Boot Actuator。查看文档的这一部分。感兴趣的主要类是ErrorMvcAutoConfiguration。特别是这部分:
@Bean
@ConditionalOnMissingBean(value = ErrorAttributes.class, search = SearchStrategy.CURRENT)
public DefaultErrorAttributes errorAttributes() {
return new DefaultErrorAttributes();
}
@Bean
@ConditionalOnMissingBean(value = ErrorController.class, search = SearchStrategy.CURRENT)
public BasicErrorController basicErrorController(ErrorAttributes errorAttributes) {
return new BasicErrorController(errorAttributes);
}
错误从何而来(状态和消息相同)?
参见上面我刚刚引用的代码,然后查看DefaultErrorAttributes:
Map<String, Object> errorAttributes = new LinkedHashMap<String, Object>();
errorAttributes.put("timestamp", new Date());
// and so on...
另一个必然的问题是:为什么jhipster,一个客户端和一个服务器中有2个错误页面?不应该只有一个客户端页面,因为JHipster适用于SPA。为什么服务器不总是发送回index.html,让客户端测试是否有错误?
需要有一个服务器端错误处理程序。并非所有内容都将映射到Angular路线。例如,www.yoursite.com / doesnt_exist将使浏览器向服务器发出另一个请求。
最后一个问题也是必然的:是否有某种方法可以在客户端(角度)路由(在app.js文件中)中请求动态服务器端(thymeleaf)模板。这对于开发丰富的SPA非常有用。
是的。您可以templateUrl
在app.js中指定JS函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句