使用Thymeleaf和Angular在JHipster中进行服务器/客户端路由

HammerGuy

背景信息:我是一名法国开发人员,正在一个团队中开发基于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)的工作

约翰·R

我想知道的是:-百里香如何知道它必须返回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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用openssl在客户端/服务器中进行DES加密/解密

React-Router:使用客户端路由进行服务器请求的过程?

如何使用grpc在python服务器和php客户端之间进行通信?

使用OpenSSL服务器和SChannel客户端进行TLS会话恢复

使用Python服务器和Android客户端进行套接字编程

使用javascript在服务器和客户端之间进行XML通信

使用UDP在服务器和客户端之间进行文件传输(.png,.txt)

客户端路由(使用react-router)和服务器端路由

客户端路由(使用react-router)和服务器端路由

何时使用“客户端路由”或“服务器端路由”?

在 REST 节点 js 服务器中进行身份验证,使用带有 Facebook 登录的 Android 客户端

在Java中的简单客户端/服务器应用程序中进行读/写

如何在同一服务器上为静态目录和 Angular 客户端添加路由?

使用网络服务发现在Java服务器和Android客户端之间进行通信

在同一路由器上为OpenVPN服务器和客户端进行策略路由?

在服务器端的IIS和客户端的Angular 4上使用PHP时发生CORS错误

访问服务器端javascript变量以使用客户端javascript进行操作

Spring WS Client-使用服务器和客户端证书进行身份验证

在Node.js上使用soket.io进行服务器和客户端之间的连接

如何使用套接字IO在Python客户端和NodeJS服务器之间进行通信?

为什么DHCP使用UDP端口67和68进行客户端和服务器之间的通信?

在Spring框架中,如何在服务器和客户端之间进行快速通信?

python套接字,尝试在服务器和客户端之间进行交互登录

在Java服务器和PHP客户端之间进行通信

使用React-Engine和Express到客户端的服务器端变量

使用angular-meteor通过Meteor.methods在服务器和客户端之间发送数组

如何使用python(服务器)和Angular(客户端)发送pdf数据并从SQL Server保存

是否可以使用客户端-服务器架构和微服务架构?

使用php soap服务器和Java客户端的Web服务