标签或页面片段中使用的 Spring-MVC 通用模型属性

发布于 2024-09-07 11:24:08 字数 327 浏览 4 评论 0原文

网站中通常有许多页面请求相同的模型属性,例如,呈现当前用户名的标头,或需要一些基于服务器的信息的列。

...
<body>
<mytaglib:header/>
...
<jsp:include page="footer.jsp"/>
...
</body>

最简单的解决方案是,您编写的每个返回使用页眉或页脚的视图的控制器方法也会添加其中包含的组件所需的所有属性,但随着站点的增长,它可能会变得难以处理,特别是当您开始处理并非所有页面都具有完全相同的组件。

有没有办法封装基于子页面或标签添加到模型的逻辑?

It's common to have many pages in a website that request the same model attributes, for example, a header that renders the current users name, or a column that needs a few server based pieces of information.

...
<body>
<mytaglib:header/>
...
<jsp:include page="footer.jsp"/>
...
</body>

The simplest solution is that every controller method you write that returns views that use the header, or footer also add all of attributes needed by components contained within it, but as the site grows it can become difficult to handle, particularly when you start dealing with pages that don't all have exactly the same components.

Is there a way to encapsulate the logic that adds to the model based on sub-pages or tags?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苄①跕圉湢 2024-09-14 11:24:08

嗯,你可以通过几种方式做到这一点。请记住以下内容:

  1. 将您的逻辑放在 中过滤器将信息放入请求范围内;

  2. Spring 有一个类似于 Filter 的东西,称为 拦截器。您可以将逻辑放在此处,然后再次将其保存在请求范围中。

  3. 将自定义标记背后的逻辑插入到您的页面中。这样做有一个缺点,因为您必须在每个 JSP 中插入该标记。如果您使用像 SiteMesh 这样的装饰器过滤器,那么您可以将其放置在您的装饰器 JSP 中并完成它。

  4. 在父控制器中包含所有控制器都将扩展的逻辑。

Well, you could do that in a few ways. The following pop in mind:

  1. Put your logic in a Filter that places the information in request scope;

  2. Spring has something similar to a Filter called an Interceptor. You can place your logic here and again save it in request scope.

  3. Have the logic behind a custom tag that is inserted into your pages. There is a disadvantage to this because you must insert the tag in each JSP. If you are using a decorator filter like SiteMesh then you could place this once in your decorator JSPs and be done with it.

  4. Have the logic in a parent controller that all your controllers will extend.

归属感 2024-09-14 11:24:08

您特别使用框架吗?如果您只使用 servlet,我建议您创建一个基本 servlet 类,如果使用 spring,我建议您创建一个基本 SPring MVC 控制器。您可以从基类设置这些属性或使用过滤器:)

Do you use a framework in particular? If you only use servlets I would suggest you to create a base servlet class, if using spring I will suggest you to create a Base SPring MVC Controller. ANd you can set these attributes from the base class or use filters :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文