在Spring 3.1 MVC中重定向到新的URL?

时间:2012-02-22 02:28:30

标签: spring-mvc

我很困惑使用spring web MVC来“重定向”。

我想重定向到某个网址,但brwser中的地址栏未更新。

首先,我将表单发布到控制器,在此控制器中,我使用“redirect:”前缀到新控制器(它可以工作),但地址栏仍然引用了以前的URL。

以下是我的控制器接收邮寄请求的代码:

@RequestMapping(method=RequestMethod.POST)
    public ModelAndView processSubmit(LoginFormBean formBean, BindingResult result, 
    Model model) {
        System.out.println(formBean.getUsername());
    System.out.println(formBean.getPassword());
    return new ModelAndView("redirect:/index");
}

让控制器重定向:

@Controller
@RequestMapping("/index")
public class IndexController {

    @RequestMapping(method=RequestMethod.GET)
    public String show() {
        return "index";
    }
}

在发布表单之前,表单URL为“http:// localhost:7001 / mobi” 在发布和重定向之后,URL不是“http:// localhost:7001 / mobi / index”,但仍然是“http:// localhost:7001 / mobi”

我的代码中是否有任何需要纠正的错误? 社区能否协助我正确实施?

1 个答案:

答案 0 :(得分:0)

我可以根据你的代码推测出唯一可见的答案是,你怀疑你有一个重定向到索引的模式视图。你可以在Spring 3中放弃modelandview语法,直接返回你想要的页面。这是我自己的代码中的一个示例,我还收到一个已发布的表单并重定向到另一个控制器:

@RequestMapping(value = REQUEST_MAP, method = RequestMethod.POST)
public String processForm(HttpServletRequest req, HttpServletResponse res, @ModelAttribute("myForm") myForm form, BindingResult result)
        throws Exception {
    //super cool form handling logic here!
    return "redirect:/anotherControllerMappedURI"; 
}

我本可以直接返回一个字符串来返回一个视图页面。比如,返回“index”以将用户发送到index.jsp页面。然后,如果需要,您可以使用元标记执行html重定向。