【发布时间】:2018-04-15 01:17:53
【问题描述】:
我在每个视图上都使用了一个 JSP:include 标记来显示我的菜单。昨天我发现你实际上可以包含一个非常简洁的控制器方法,因为它允许我在返回菜单之前进行一些处理。我正在做的是将这个添加到每个页面:
<jsp:include page="/menu/showMenu"/>
我曾经这样做过:
<%@ include file="menu.jsp" %>
此更改允许我在返回菜单时将布尔值传递给模型,我使用该菜单来显示或不显示某些选项,具体取决于用户可以访问的内容。这在第一次加载页面时非常有效,但在完成任何类型的控制器处理后菜单完全消失。例如,我有一个日志页面,其中有一个表格,显示来自数据库的日志条目。列标题包含作为表单的一部分的搜索字段,当提交时,它会调用控制器方法来过滤日志列表并显示过滤后的数据。该控制器方法的返回语句很简单:
return "logs";
当使用指向实际 JSP 文件而不是控制器方法的原始包含时,这非常有效,但是使用包含控制器方法的新方法时,当过滤逻辑返回页面时,菜单会消失。我总是能做的就是像以前一样包含 JSP 文件,并将服务调用直接放在 JSP 中以检查用户是否可以访问每个函数,但我真的更喜欢让控制器做这些事情并传递布尔值的想法到 JSP。
知道为什么我会看到这种行为吗?如有需要,我可以提供代码示例。
谢谢!
【问题讨论】:
-
我注意到一个模式,当从 GET 请求返回时菜单显示,但在从 POST 请求返回时不显示,如果这有帮助的话。所有 GET 方法都返回一个显示菜单的页面。
-
我想通了!我必须在我的菜单控制器中添加一个 POST 方法。它的作用与 GET 方法完全相同,但当包含在从另一个控制器的 POST 方法返回的页面中时,它是必需的。希望这可以帮助别人!
-
假设这不是一个重复的问题,您可以提供一个自我回答,因为您已经找到了自己问题的答案。
标签: java jsp menu controller include