Spring mvc 在spring MVC控制器中重定向到另一个视图
我试图从SpringController中的一个url重定向到另一个url,但它自己将url更改为我提到的其他url,并给出404错误 我的spring控制器如下所示: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
@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/。如果仍然没有重定向,请检查视图是否存在于特定位置,或者您可以发布控制台日志。您好,您可以参考此链接