Spring mvc 在spring MVC控制器中重定向到另一个视图

Spring mvc 在spring MVC控制器中重定向到另一个视图,spring-mvc,Spring Mvc,我试图从SpringController中的一个url重定向到另一个url,但它自己将url更改为我提到的其他url,并给出404错误 我的spring控制器如下所示: @Controller @SessionAttributes({ "dataObject", "userId" , "screen" , "scrUpdate" }) public class ScreenDesignerController extends BaseController { /** * Injected s

我试图从SpringController中的一个url重定向到另一个url,但它自己将url更改为我提到的其他url,并给出404错误

我的spring控制器如下所示:

 @Controller
@SessionAttributes({ "dataObject", "userId" , "screen" , "scrUpdate" })
public class ScreenDesignerController extends BaseController {
/**
 * Injected screen designer service class.
 */
@Autowired
private ScreenDesignerService screendiService;

@RequestMapping(value = "EditScreen", method = RequestMethod.POST)
public String  editScreen(Model model , @RequestBody String tempdata , RedirectAttributes ra) throws Exception {
    ScreenUpdate scrUpdate;
    try {
        logger.info("in editscreen post method: ");
        scrUpdate = screendiService.formatScreen(tempdata);
        logger.info("screenID: " + scrUpdate.getScreenId());
        ra.addFlashAttribute("scrUpdate", scrUpdate);
    } catch (Exception e) {
        logger.error("in editscreen post method: " + e);
    }

    return "redirect:/UpdateScreen";


}

/**
 * Controller get method for Screen Update.
 * @param model Model.
 * @param scrUpdate to create layout for updating screen.
 * @return the template name
 * @throws Exception if anything goes wrong
 */

@RequestMapping(value = "UpdateScreen", method = RequestMethod.GET)
public final String updateScreen(Model model, @ModelAttribute("scrUpdate") ScreenUpdate scrUpdate) throws Exception {
    try {
        model.addAttribute("screen", scrUpdate);
        logger.info("Update Screen GET");
    } catch (Exception e) {
        logger.error("inside GET Catch UpdateScreen: " + e);
    }
    return "ScreenDesigner/UpdateScreen";
}

查看代码,您重定向到的GET方法似乎希望ScreenUpdateobject作为模型属性。请按如下所示更改GET方法

@RequestMapping(value = "UpdateScreen", method = RequestMethod.GET)
public final String updateScreen(Model model) throws Exception {
model.addAttribute("screen", scrUpdate);
return "ScreenDesigner/UpdateScreen";
}

如果您想将ScreenUpdate对象发送给这个GET方法,您可以将它添加到post-methodeditScreen方法的会话中,然后在GET方法中获取它。

它不会给出404。它给出一个500内部服务器错误。这通常表示代码中存在错误,例如NullPointerException。屏幕上或日志中的堆栈跟踪允许识别错误的原因。因此,如果您需要帮助,请发布此堆栈跟踪及其引用的相关代码。您好,谢谢您的回答。我照你说的做了。现在很好用。我从POST to get方法中获得了预期的对象,并且get方法在控制台中显示为成功,但视图保留在EditScreen页面上,并且不会重定向到ScreenDesigner/UpdateScreen。请帮忙。谢谢你能更新你的代码吗?请发布你的最新代码。实际上,根据规则,在重定向后,你的url应该从EditScreen更改为UpdateScreenHi Abhishek,上面是我的更新代码。现在它不会抛出任何错误。它从POST to GET方法接收对象,并且GET方法在控制台中显示为成功,但视图保持在EditScreen页面上,并且不会重定向到ScreenDesigner/UpdateScreen.Hi。代码似乎很好。按如下方式返回视图返回重定向:UpdateScreen remove/。如果仍然没有重定向,请检查视图是否存在于特定位置,或者您可以发布控制台日志。您好,您可以参考此链接