java - 磁贴可以有 Action 类吗?

标签 java struts2 tiles struts2-tiles-plugin

在 Stuts2 中,我使用 Tiles 插件为每个页面创建一致的网站布局(菜单、页脚、页眉等)。

现在每个图 block 只是一个静态 HTML 内容。

是否可以通过例如使 Tile 更具动态性?每次要呈现页脚时调用 Footer 操作类?例如:从数据库中获取页脚内容。

如果我要在我的应用程序的每个页面的操作类中执行此操作,这将导致代码非常不可用...

那么也许从 Tile 的角度来看是可能的?

最佳答案

There is only one way to do what you ask with a tiles version less than 2.2.2 and that is with a "preparer" .

然而,这不是与 struts2 的集成,而是意味着它自己的准备器将访问服务层以获取 View 所需的内容,并且所有这些内容都需要通过 tiles 属性进行设置。

对于 tile 版本 2.2.2 及更高版本: 您可以在 tiles 属性中使用 OGNL 表达式,这可以允许访问某些 struts2 交互以及静态方法访问。使用静态方法访问,您可以根据需要调用方法来返回字符串。创建这样一个字符串相当于编写一个 scriptlet。

要升级,您需要手动覆盖一些 jar 以获得 tiles 2.2.2,或者要获得版本 3,您需要实现自己的结果类型:How to integrate Struts 2 with Tiles 3 .


目前我实际上并不推荐上述任何一种方法,建议使用图 block 3,但不能以此为借口做一些像编写 scriptlet 这样糟糕的事情。最好在 tile 中使用 s:action 标签,正如 David 提到的那样,或者使用 Jaiwo99 提到的 Ajax 方法。原因是这两种方法都与 struts2 保持一致,而我介绍的方法不常见并且更难维护。我个人倾向于使用 ajax 方法。

Struts2 和 struts2-json-plugin 使得创建 json 服务变得非常简单。 Tiles 是一个很好的减少样板的系统。如果大量使用 ajax,则两者真的可以相互补充。您可以制作很多可重用的 ajax 组件,只要确保不要对操作的 url 进行硬编码即可。始终使用 s:url 标记并将其分配给 JS 变量。

关于java - 磁贴可以有 Action 类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14291422/

相关文章:

java - 如何在java中动态地将字符串列表拆分为多个列表

java - 谷歌在云中驱动java

java - Struts 2 默认页面

java - Java中的 "the result to the type expected by the invoker"是什么?

java - 打包具有大量依赖项的 Java 应用程序的最佳方法是什么?

java - Struts2 redirectAction 不是 https 吗?

java - 如何在Struts2中将JSP目标设置为父框架?

c++ - 概述 rpg 平铺空间

javascript - Spring MVC - Tiles、JSP 页面包含 js/jquery 文件不起作用

html - 我怎样才能在 div 的左侧和右侧有一个可平铺的区域?