我有一个本土的 MVC 实现。像这样的 ControllerServlet:
/controller?cmd=EditUser&userid=55
从这个 URL,控制器创建一个EditUserCommand.class
实例并调用一个execute()
方法,该方法返回要显示的结果页面(例如user.jsp
)。
然后控制器 servlet 执行...
getRequestDispatcher(resultPage).forward(request, response);
...并显示结果页面。
控制器所做的其中一件事是将消息(错误、信息等)设置为请求属性。例如:
request.setAttribute("infoMessage", "User was edited successfully.");
并且该消息从user.jsp
页面中的请求中提取并显示。
工作正常。
现在我的问题来了。
有时我的命令不会返回类似的页面,user.jsp
而是返回类似结果的 URL cmd=ShowUser&userid=55
。这是因为在显示最终页面之前我可能要检查一些事情,例如查看用户的权限等。
当我这样做时,我放置在请求中的“infoMessage”永远不会出现,因为结果是一个对 servlet 进行新调用的 URL,这是一个新请求。新请求不保留第一个请求的请求属性;这是有道理的,我只是没有预见到会发生这种情况。
如何使我的请求变量“保持活动状态”,直到它实际显示在原始请求产生的最终页面上?
任何建议或意见表示赞赏。仅供参考,我无法重新编写整个应用程序以使用 JSF 的 Struts、Spring MVC 之类的东西。这不是一个选择。
谢谢!
抢