我想知道什麼: - thymeleaf怎麼知道它返回的error.html?
兩部分。首先,Spring被配置爲在所有服務器端視圖中使用Thymeleaf。在JHipster,應用程序註釋是這樣的:
@ComponentScan
@EnableAutoConfiguration(exclude = {MetricFilterAutoConfiguration.class, MetricRepositoryAutoConfiguration.class})
public class Application {
的@EnableAutoConfiguration
的關鍵在於理解Thymeleaf是如何設置。它觸發ThymeleafAutoConfiguration創建Thymeleaf視圖解析器和什麼。請注意,JHipster有一個ThymeleafConfiguration
類,但這僅用於電子郵件,並且與您的問題無關。
第二部分... Spring Boot使用「/ error」作爲默認錯誤視圖。從the docs:
春天開機默認提供的/錯誤映射,處理在一個合理的方式,所有 錯誤,並已被註冊爲在servlet容器中的「全球性」的錯誤 頁。對於機器客戶端,它將生成一個 JSON響應,其中包含錯誤,HTTP狀態和異常消息的詳細信息。對於瀏覽器客戶端,有一個'whitelabel'錯誤 視圖呈現HTML格式的相同數據(要自定義它,只需添加一個視圖,解析爲'錯誤')。
解析錯誤視圖時,Spring會爲您正在使用的視圖解析器添加正確的後綴(我描述的第一部分)。例如,Thymleaf的.html,Velocity的.vm或Freemarker的.ftl。
某處是否有某種服務器端控制器?
是的。 JHipster也在使用Spring Boot Actuator。退房this section of the docs。感興趣的主要類別是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...
另一個問題是一個推論:爲什麼會出現2個錯誤頁面中 jhipster,一個客戶端和一個服務器?由於JHipster用於SPA,因此不應該只有一個 客戶端頁面。爲什麼服務器 總是發回index.html,讓客戶端測試是否存在 錯誤?
需要有一個服務器端錯誤處理程序。並非所有的東西都會映射到角度路線。例如,www.yoursite.com/doesnt_exist會導致瀏覽器向服務器發出另一個請求。
最後一個問題是一個推論太:是有一些方法要求在客戶端(角) 路由 動態服務器端(thymeleaf)模板(在app.js文件)。這對於開發豐富的SPA有很大的幫助。
是的。你可以在app.js中爲templateUrl
指定一個JS函數。