0

我是 Tiles 的新手,我喜欢它。

我的问题是,我在 SpringFramework 的模板定义中有一个 head 、 body 和 footer tile。我想在 head tile 中显示一些用户信息,并在页脚中显示最后登录 ip 以及一些动态数据。我的意思是我可以做到这一点,如果我 assagn(addAttribute) 使用此模板的每个控制器中的每个变量。

有没有什么方法可以让header/footer tile从自己的spring Controller中询问数据?或者如何在不重复每个控制器中的源代码的情况下将信息(变量值)添加到页眉和页脚图块。

谢谢

4

2 回答 2

0

可能有几种方法可以实现这一点,但一种方法可能是通过过滤器。

在您的 web.xml 中,您将定义一个新过滤器并将其映射到所有 url,即

<filter>
  <filter-name>myFilter</filter-name>
  <filter-class>path.to.my.filter.MyFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>myFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

然后,您将在<filter-class>元素中指定的路径(在本例中为 path.to.my.filter.MyFilter)创建一个类并创建实际的过滤器。

至于过滤器的实现,也有几种方法,我建议使用 Spring 实现,因为它更容易集成。下面是我用于 Flash Map 实现的另一个堆栈溢出帖子的示例。它使用了一个OncePerRequestFilter,所以每个请求都会调用这个过滤器。如果您希望使用此过滤器类型,我建议将这些值存储在 Session 中,以便它们只执行一次,然后在每个请求中检索,从而节省一些处理时间。

https://github.com/donkeystalk/floor41/blob/master/floor-41/src/main/java/octane/floor/filters/FlashMapFilter.java

希望这可以帮助。

于 2012-09-28T14:08:42.227 回答
0

Spring Interceptor solve this (example: http://dzone.com/tutorials/java/spring/spring-interceptor.html)

于 2013-04-26T14:28:30.960 回答