我正在从 Strut1 + Tiles 项目迁移到 SpringMVC 和 Apache Tiles 3。我对Struts1+Tiles只了解一点点,它太旧了,我陷入了Struts-tiles中的Controller和ComponentContext。根据apache网站的文档,它被ViewPreparer和AttributeContext替换,但我不知道以下行的含义:
ComponentContext compContext=(ComponentContext)pageContext.getAttribute(ComponentConstants.COMPONENT_CONTEXT,PageContext.REQUEST_SCOPE);
什么是ComponentConstants.COMPONENT_CONTEXT
?以及如何更改ComponentContext
至AttributeContext
请帮忙,谢谢。
最佳答案
Bidi,有两种获取 AttributeContext 的方法:
第一个,如 mck 所说:通过请求范围的“org.apache.tiles.AttributeContext.STACK”键。但是,该值是一个 STACK,其中包含 2 个 AttributeContext 类型的元素。我们需要的是第一个元素。恕我直言,这种方式是有限制的,因为由于数据结构是一个堆栈,获取也意味着根据 FIFO 规则从堆栈中删除,因此您只能使用该对象一次。
我在项目中使用的是第二种方式。因为ViewPreparer的execute()方法已经有一个AttributeContext类型的参数,并且每次渲染页面时都会调用这个方法,所以你可以在重写时使用这个对象来做你想做的事情(或者放在request中)方法。 AttributeContext 只是键/值对的集合。通常,人们使用它来访问模板中的一些属性值,因此获取这些值并将它们放入请求可以节省开销。您还可以创建继承类的一些静态属性并为其设置值。
关于java - 将 Struts-Tiles 迁移到 Spring+tiles 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27845286/