我正在从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,其中包含AttributeContext类型的2个元素。我们需要的是第一个要素。恕我直言,这种方法是有限的,因为由于数据结构是一个堆栈,因此也意味着要根据FIFO规则从堆栈中删除,因此您只能使用该对象一次。

我在项目中使用第二种方式。因为ViewPreparer的execute()方法已经具有AttributeContext类型的参数,并且每次呈现页面时都会调用此方法,所以可以在覆盖时使用此对象执行所需的操作(或将其放入请求中)方法。
AttributeContext只是键/值对的集合。通常,人们使用它来访问作为模板属性的某些值,因此获取值并将其放入请求中可以节省开销。您还可以创建继承类的一些静态属性,并将值设置为它们。

09-16 06:00