我正在建立一个spring网站,在SubCure下有一个react单页应用程序,我当前的url结构应该是这样的
localhost/admin/** => react app
localhost/** => spring thymeleaf/rest/websocket app for everything else
react app mapping:
localhost/admin/static/** => static react files
localhost/admin/** => react index.html for everything else
Example of project resources structure:
resources/
admin/ <= my admin react files is here
index.html
static/ <= react css, js, statics
templates/ <= thymeleaf templates
static/ <= theamleaf static
...
所以我需要转发反应index.html
文件为每个url路由和子路由基本上单页应用程序的一切,除了静态文件
看起来像一个常见的任务,这里有一些我已经尝试过的东西:
无法使用转发:/admin/index。html
用于/admin/**
,因为这将创建递归,因为管理/索引。html
也在admin/**
下,必须以某种方式拦截admin/static/**
。
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/admin/**")
.addResourceLocations("classpath:/admin/");
}
index.html
仅映射到/admin/index.html
url,并且此选项几乎有效,但仅当您从访问反应应用程序localhost/admin/index.html
现在我正在使用customResourceResolver
来解决这个问题
演示:https://github.com/varren/spring-react-example
@Configuration
public class BaseWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
ResourceResolver resolver = new AdminResourceResolver();
registry.addResourceHandler("/admin/**")
.resourceChain(false)
.addResolver(resolver);
registry.addResourceHandler("/admin/")
.resourceChain(false)
.addResolver(resolver);
}
private class AdminResourceResolver implements ResourceResolver {
private Resource index = new ClassPathResource("/admin/index.html");
@Override
public Resource resolveResource(HttpServletRequest request, String requestPath, List<? extends Resource> locations, ResourceResolverChain chain) {
return resolve(requestPath, locations);
}
@Override
public String resolveUrlPath(String resourcePath, List<? extends Resource> locations, ResourceResolverChain chain) {
Resource resolvedResource = resolve(resourcePath, locations);
if (resolvedResource == null) {
return null;
}
try {
return resolvedResource.getURL().toString();
} catch (IOException e) {
return resolvedResource.getFilename();
}
}
private Resource resolve(String requestPath, List<? extends Resource> locations) {
if(requestPath == null) return null;
if (!requestPath.startsWith("static")) {
return index;
}else{
return new ClassPathResource("/admin/" + requestPath);
}
}
}
}
问题内容: public void push(E element) { if (size == elements.length) { resize(); // doubel of size } elements[size++] = element; } Java中的a 和 a或a–和–a有什么区别 谢谢 问题答案: 或是后缀运算符,表示a的值将在对表达式求值后更改。 或是前缀运算,表示a的值将在对
在BeX5中,功能树上会出现类似$UI/…/…/xx.a的url, 其中“.a”是一种特殊的url,“.a”通过以下规则,最终定位到具体的.w文件: 1. 如果登录的门户是5.3之前的门户 如果客户端是手机: 查找.w文件的顺序是 第一步:查找/mobileUI下相应的.w文件; 第二步:查找/UI2下相应的.m.w文件; 第三步:查找/UI2下相应的.w文件; 如果客户端是PC: 查找.w文件的
问题内容: 正如我在标题中提到的 a + = b和a = + b以及a 和 a有什么区别?我有点困惑 问题答案: 相当于 相当于 且两者都增加1。不同之处在于,返回的是增量之前的值,而返回的是增量之后的值。 那是:
实现的简单A*算法寻路Demo。A*寻路一般可用于游戏当中计算人物走动的线路。Demo测试方法是,迷宫中黑点是障碍物,绿点是可以走过的点,红点是起始点,然后点击任意绿点会生成一个灰色点,设置为终点。点击屏幕右上角的“移动按钮”,红点便开始了它的A*寻路之旅。 [Code4App.com]
本文向大家介绍if(a-b <0)和if(a 相关面试题,主要包含被问及if(a-b <0)和if(a 时的应答技巧和注意事项,需要的朋友参考一下 并且可能意味着两个不同的东西。考虑以下代码: 运行时,将仅打印。发生的事情显然是错误的,但是溢出并变为,这是负面的。 话虽如此,请考虑一下数组的长度确实接近。中的代码如下所示: 确实接近,所以(是)可能溢出并变成(即负数)。然后,将 下溢 相减回正数。
我们祝愿您的 Debian 安装顺利愉快,并希望您能发现 Debian 在您这里的用武之地。 还有您也许可以读一下 第 8 章 下一步该干什么。