首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Struts-Tiles迁移到Spring + tiles 3

将Struts-Tiles迁移到Spring + tiles 3
EN

Stack Overflow用户
提问于 2015-01-08 16:46:58
回答 3查看 2.4K关注 0票数 1

我从一个SpringMVC + Tiles项目迁移到Strut1和Apache 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

帮帮忙,谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-03 17:01:35

Bidi,有两种获取AttributeContext的方法:

第一个,如mck所说:通过"org.apache.tiles.AttributeContext.STACK“键的请求范围。但是,该值是一个包含2个AttributeContext类型元素的堆栈。我们需要的是第一个要素。IMHO,这种方式是有限的,因为数据结构是一个堆栈,因此也意味着根据FIFO规则从堆栈中移除,所以您只能使用对象一次。

我在我的项目中使用了第二种方式。因为ViewPreparer的execute()方法已经有一个AttributeContext类型的参数,而且每次呈现页面时都会调用该方法,所以在重写该方法时,您可以使用该对象来完成您想做的事情(或将其放在请求中)。AttributeContext只是键/值对的集合。通常,人们使用它来访问一些值,这些值是模板中的属性,因此获取值并将它们放到请求中可以节省开销。还可以创建继承类的一些静态属性,并将值设置为它们。

票数 0
EN

Stack Overflow用户

发布于 2015-01-11 11:08:17

随着Spring-4和Tiles-3集成的建立(这里有spring文档,以及一些很好的教程),那么您放入spring模型映射中的属性将在您的jsp中可用,这与AttributeContext无关。

AttributeContext只是另一方面,(基本上)只用于保存属性映射。这里的属性在定义中定义,用于标识模板或字符串属性(通常在xml定义中声明),并附带角色、呈现器、表达式和/或值的属性。

如果AttributeContext是您所追求的:您可以通过当前的tilesContainer获取它,并使用静态TilesAccess获取当前容器,例如

代码语言:javascript
复制
TilesContainer tileContainer = TilesAccess.getCurrentContainer(request);
AttributeContext attributeContext = tilesContainer.getAttributeContext(request);
票数 0
EN

Stack Overflow用户

发布于 2015-01-17 18:49:50

比迪,读一读http://tiles.apache.org/framework/tutorial/advanced/runtime.html

特别是“使用API的运行时组合”部分。

代码语言:javascript
复制
TilesContainer container = TilesAccess
        .getContainer(request.getSession().getServletContext());

Request tilesRequest = new ServletRequest(
        container.getApplicationContext(), 
        request, 
        response);

否则,我建议您深入了解Tiles代码基,它不是复杂的代码,特别是TilesAccess、Request、ApplicationContext之类的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27845286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档