java - Spring MVC : autowiring a controller in another controller -


i have 2 controllers loginviewcontroller , userviewcontroller

@controller public class loginviewcontroller {      @autowired     private userviewcontroller userviewcontroller;  //can't autowire, since spring creates proxy userviewcontroller class      @requestmapping(value="/login", method=post)     public string login(){          //username , password checking etc          if(login_successfull){             //when login successfull, need redirect screen user dashboard               model.addattribute("loginmessage", "you loggined successfully")             return userviewcontroller.viewdashboard(userid);         }        } }  @controller @requestmapping("/user") public class userviewcontroller {      @autowired      private userservice userservice;      @requestmapping(value="/dashboard", method=get)     public string viewdashboard(model model, @requestparam(value="id", required=true) long userid){         //fetch , send user details dashboard         model.addattribute("user", userservice.get(userid));         return "userdashboard";      } } 

after successful user login, need redirect screen user dashboard login success message.

for can use 2 approaches

  1. since have method load user dashboard in userviewcontroller, autowired userviewcontroller in loginviewcontroller, leads nosuchbeandefinitionexception, since spring creates proxy userviewcontroller.

  2. i can use redirect/forward route user dashboard return "redirect:/user/dashboard?id=123". when change url of viewdashboard() method, need identify , correct redirect/forward statements.

so, there way invoke userviewcontroller.viewdashboard() loginviewcontroller ? using spring 3.1.4 , thymeleaf

if want output of controller send user controller, can perform 'redirect':

if(login_successfull){     //when login successfull, need redirect screen user dashboard       model.addattribute("loginmessage", "you loggined successfully")     return "redirect:/user/dashboard"; } 

if decide change url of controller, need replace html links in site. if doing global search/replace, should able find redirect instances well.

alternatively, try this:

public class urlconstants {     public static final string user_path = "/user";     public static final string dashboard_path = "/dashboard"; } 

then change controller:

@controller @requestmapping(urlconstants.user_path) public class userviewcontroller {     ...     @requestmapping(value=urlconstants.dashboard_path, method=get) 

and redirect:

return "redirect:" + urlconstants.user_path + urlconstants.dashboard_path; 

Comments

Popular posts from this blog

scala - 'wrong top statement declaration' when using slick in IntelliJ -

c# - DevExpress.Wpf.Grid.InfiniteGridSizeException was unhandled -

PySide and Qt Properties: Connecting signals from Python to QML -