我在springboot上提供反应应用程序。目前我已经设置了react-router。当在React应用程序中单击a时,它将被发送到Spring视图控制器,该控制器查找URL并返回" index"模板与反应应用程序。然后React路由器设置了几条路由。 现在基本路线正在运行,但我现在正在尝试将参数发送到新页面。我能够将ID发送到ViewController,但React-router无法识别路径并返回404。 这是ViewController.java代码。
@RequestMapping(value = {"/book/{id}"})
public String getBook(@PathVariable("id") long id) {
System.out.println("Id is " + id);
return "index";
}
这就是我试图指向的路线,它位于root.js中。
<Route path="/book/:id" component={Book} />
答案 0 :(得分:0)
我遇到了这个问题,发现使用HashRouter而不是BrowserRouter解决了这个问题。
我的index.js(顶级JS文件)看起来像这样。
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
import { HashRouter } from 'react-router-dom';
ReactDOM.render(<HashRouter><App /></HashRouter>,
document.getElementById('root'));
registerServiceWorker();
不需要相应的RequestMapping方法,实际上我没有为React应用程序设置任何RequestMappings。这似乎可以起作用,因为HashRouter将哈希符号作为前缀添加到React应用程序中的所有路径,这会“愚弄”Spring绕过处理URL,让React按照自己的意愿处理它。
免责声明:我是一名React新手,花了几天时间试图解决这个问题,并且无法在线找到答案。当我终于找到答案时,我认为不会分享它。我不知道这是一个很好的解决方案,甚至是最好的解决方案,但它很简单且有效。