java-如何将对象从一个控制器传递到另一个控制器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何将对象从一个控制器传递到另一个控制器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3250字,纯文字阅读大概需要5分钟。
内容图文
![java-如何将对象从一个控制器传递到另一个控制器](/upload/InfoBanner/zyjiaocheng/668/1d5eab62d9e747999910d0e51417e42a.jpg)
我想传递第二个控制器的功能要接收的对象(放置在第一个控制器的功能模型中)并将接收到的对象放置在功能的模型中.
我知道HTTP是无状态的,但是有没有一种方法可以在不使用Spring MVC中的会话的情况下将对象从一个控制器传递到另一个控制器?谢谢.
请参阅下面提供的示例代码.
FirstController.java
@RequestMapping(value="search-user",method=RequestMethod.POST)
public ModelAndView searchUser (HttpServletRequest request) {
//Retrieve the search query by request.getParameter
String searchQuery = request.getParameter("searchQuery");
//Search for the user (this is the object that I want to pass)
User user = userDao.searchUser(searchQuery);
ModelAndView mav = new ModelAndView(new RedirectView("display-searched-user"));
mav.addObject("user",user);
return mav;
}
SecondController.java
@RequestMapping(value="display-searched-user",method={RequestMethod.GET,RequestMethod.POST})
public ModelAndView displayResultUser (HttpServletRequest request) {
ModelAndView mav = new ModelAndView();
mav.setViewName("result");
//I want to receive the object from the FirstController and set that object in this function's model.
return mav;
}
解决方法:
您将需要从客户端发送2个呼叫,并将“用户”发送到第二个控制器(您应该对其进行修改以接受用户).因此,对“ / search-user”的第一次调用将返回一个包含用户的对象.客户端提取用户并将其发送到“ / display-searched-user”.
另一种方法可能是,第二个控制器中的请求也接受参数“ searchQuery”.在这种情况下,只需将您的第二个控制器修改为如下所示:
@RequestMapping(value="display-searched-user",method={RequestMethod.GET,RequestMethod.POST})
public ModelAndView displayResultUser (HttpServletRequest request) {
ModelAndView mav = new ModelAndView();
mav.setViewName("result");
FirstController fc = new FirstController();
return fc.searchUser(request);
}
编辑:
我刚刚读过CrazySabbath提出的创建运输班的建议.假设两个控制器都可以访问它,我将实现以下运输类:
public class UserTransporter {
private static boolean userAvailable = false;
private static User user;
public static boolean isUserAvailable() {
return userAvailable;
}
public static void setUser(User user) {
UserTransporter.user = user;
userAvailable = true;
}
public static User getUser() {
userAvailable = false;
return user;
}
}
只是要清楚一点:我添加了布尔变量,因为我想使它不可能通过null或获取用户来获得,而这以前已经通过调用获得了.如果您不想检查,只需删除布尔值和我使用过的所有行即可.
需要将第一个控制器更改为:
@RequestMapping(value="search-user",method=RequestMethod.POST)
public ModelAndView searchUser (HttpServletRequest request) {
//Retrieve the search query by request.getParameter
String searchQuery = request.getParameter("searchQuery");
//Search for the user (this is the object that I want to pass)
User user = userDao.searchUser(searchQuery);
ModelAndView mav = new ModelAndView(new RedirectView("display-searched-user"));
mav.addObject("user",user);
UserTransporter.setUser(user);
return mav;
}
第二个控制器将需要更改为此:
@RequestMapping(value="display-searched-user",method={RequestMethod.GET,RequestMethod.POST})
public ModelAndView displayResultUser (HttpServletRequest request) {
ModelAndView mav = new ModelAndView();
mav.setViewName("result");
User user;
if(UserTransporter.isUserAvailable()) user = UserTransporter.getUser();
else return "ERROR, no user available to display";
//do something with the obtained user object
return mav;
}
内容总结
以上是互联网集市为您收集整理的java-如何将对象从一个控制器传递到另一个控制器全部内容,希望文章能够帮你解决java-如何将对象从一个控制器传递到另一个控制器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。