瓷砖可以有动作类吗?

时间:2013-01-12 07:49:26

标签: java struts2 tiles struts2-tiles-plugin

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

现在每个磁贴只是一个静态HTML内容。

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

如果我要在我的应用程序中的每个页面的动作类中执行此操作,这将导致代码无法使用...

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

2 个答案:

答案 0 :(得分:2)

请尝试以下代码:

$('#footer').load('your/action/with/namespace');

我假设您的footer标识为footer,每次打开页面时,都会调用您的页脚操作类,并且可以动态获取数据。

答案 1 :(得分:2)

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的集成,而是意味着它自己的准备者将访问服务层以获取视图所需的内容,并且需要通过tiles属性设置所有内容。

使用版本2.2.2及更高版本: 您可以在tiles属性中使用OGNL表达式,这可以允许访问某些struts2交互以及静态方法访问。使用静态方法访问,您可以调用方法返回字符串,如何使用。创建这样的字符串与编写scriptlet相同。

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


我此时并没有真正推荐上述任何一种方法,建议使用tile 3,但不能作为写一个与scriptlet一样糟糕的事情的借口。最好在tile中使用s:action标记,如David所述,或者使用Jaiwo99提到的Ajax方法。原因是这两种方法都与struts2保持一致,而我提出的那些方法将是不寻常的并且难以维护。我个人倾向于使用ajax方法。

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