Spring请求映射和路径变量,并使用参数

时间:2018-03-16 23:11:06

标签: spring reactjs spring-boot react-router

我在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} />

1 个答案:

答案 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新手,花了几天时间试图解决这个问题,并且无法在线找到答案。当我终于找到答案时,我认为不会分享它。我不知道这是一个很好的解决方案,甚至是最好的解决方案,但它很简单且有效。