2017-04-14 8 views
1

Ich benötige derzeit meine React App mit Spring Boot. Es funktioniert für die Root-URL localhost:8080/, aber natürlich wird keine der Unterstrecken vom Spring Controller erkannt.React-Router Probleme beim Bedienen Reagiere App mit Spring Boot

Ich bin mir nicht sicher, wie man das React Routing und Spring Request Mapping ohne Hard-Coding in jeder möglichen Route auf index.html ausrichten kann - und dann einige der Routen haben variable Unterrouten.


Hier ist meine HomeController, die die index.html

@Controller 
public class HomeController { 

    @RequestMapping(value = "/") 
    public String index() { 
     return "index.html"; 
    } 
} 

Hier ist das Routing in meinem

const Root = ({ store }) => (
    <Provider store={store}> 
    <Router history={browserHistory}> 
     <Route path="/" component={App}> 
     <IndexRedirect to="users"/> 
     <Route path="/org" component={OrgSearch}> 
      {<Route path="/org/:orgId" component={Org}/>} 
     </Route> 
     <Route path="/users" component={UserSearch}> 
      {<Route path="https://stackoverflow.com/users/:userId" component={User} />} 
     </Route> 
     </Route> 
    </Router> 
    </Provider> 
) 

sehr geschätzt Jede Hilfe Reagieren App machen dient!


EDIT: Ich habe versucht, einige Wildcard-Funktionalität hinzufügen, und es präsentiert sich ein seltsames Verhalten. Hier ist der aktualisierte Code für die HomeController.

@Controller 
public class HomeController { 

    @RequestMapping(value = {"/", "https://stackoverflow.com/users/**", "/org/**"}) 
    public String index() { 
     return "index.html"; 
    } 
} 

kann ich / und /users zugreifen, aber nicht /users/ oder /users/2545.

Hier ist der Fehler, wenn ich versuche, auf letztere zuzugreifen.

2017-04-14 09:21:59.896 ERROR 58840 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Circular view path [index.html]: would dispatch back to the current handler URL [/users/index.html] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)] with root cause 

javax.servlet.ServletException: Circular view path [index.html]: would dispatch back to the current handler URL [/users/index.html] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 
    at org.springframework.web.servlet.view.InternalResourceView.prepareForRendering(InternalResourceView.java:205) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:145) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1282) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE] 

Antwort

1

Für mich habe ich die Antwort in diesem link versucht. Ich hatte keinen Controller.

Im Grunde geht es darum, die addViewController definieren ...

@Configuration 
public class WebConfiguration extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/{spring:\\w+}") 
      .setViewName("forward:/"); 
     registry.addViewController("/**/{spring:\\w+}") 
      .setViewName("forward:/"); 
     registry.addViewController("/{spring:\\w+}/**{spring:?!(\\.js|\\.css)$}") 
      .setViewName("forward:/"); 
    } 
} 
0

hatte ich das gleiche Problem, und diese Zuordnung für mich gearbeitet:

@RequestMapping(value = {"/","https://stackoverflow.com/users/{id}"}) 
Verwandte Themen