gpt4 book ai didi

Spring-MVC 3.1 : Forwarding A Request From One Controller Function To Another

转载 作者:行者123 更新时间:2023-12-03 14:00:53 25 4
gpt4 key购买 nike

我正在使用 Spring 3.1。我有一个 Controller 函数,它接收通过 FORM 提交的命令对象(数据持有者)并进行一些处理:

@RequestMapping(value = "/results", method = RequestMethod.POST)
public String toResultsScreen(@ModelAttribute("ssdh") SearchScreenDataHolder ssdh,
BindingResult bindingResult,
ModelMap model,
HttpSession session) {

if (bindingResult.hasErrors()) {
logger.debug("Error returning to /search screen");
return "search";
}

netView = "results";

// do stuff

return nextView;

} // end function

一些用户想以编程方式制作 GET 链接以从我们的站点获取信息,我想设置另一个处理程序来处理该请求。它将创建该命令对象 ( ssdh ) 的新安装,并使用通过 GET 请求发送的参数填充它。然后它将它传递给上面的处理程序。像这样的东西:
@RequestMapping(value = "/pubresult")
public String toPublicResultsScreen(ModelMap model,
HttpSession session,
@RequestParam (required=true) String LNAME,
@RequestParam (required=false)String FNAME){

Search search = new Search(usertype);

// Capture the search parameters sent by HTTP
ssdh.setLast_name(LNAME);
ssdh.setFirst_name(FNAME);

// To Do: "forward this data holder, ssdh to the controller function quoted first

return nextView;

} // end function

我的问题是如何将我的命令/数据持有者对象转发到第一个 Controller 函数,这样我就不必以任何方式将代码更改为第一个 Controller 函数?

最佳答案

您可以使用 RedirectAttributes在 Spring MVC 3.1 中引入的对象,并用要保留用于重定向的数据填充它。它称为 PRG(POST/Redirect/GET)模式。

@RequestMapping(value="/saveUserDetails.action", method=RequestMethod.POST)
public String greetingsAction(@Validated User user,RedirectAttributes redirectAttributes){
//setting attributes
redirectAttributes.addFlashAttribute("firstName", user.getFirstName());
redirectAttributes.addFlashAttribute("lastName", user.getLastName())
return "redirect:success.html";
}

我写了一些关于如何使用它的技术文章。我相信它会给你更多的细节:

http://www.tikalk.com/java/redirectattributes-new-feature-spring-mvc-31

关于Spring-MVC 3.1 : Forwarding A Request From One Controller Function To Another,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11960719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com