1
1
这意味着您无法在运行时有效地选择或替换组件。 比如说,如果您想构建一个门户解决方案,用户可以按照自己的意愿在屏幕上排列组件,Tapestry就不会提供一种有效的方法来实现这一点,因为组件具有静态结构,即您必须在编译时在模板文件中定义进入组件的内容。
与此限制相关的是一种反模式:God或ber组件试图通过有效地拥有一个包含所有可用组件的巨大模板文件来解决此问题,如下所示:
然而,当Tapestry组装 整个的 组件树,包括未显示的组件,用于呈现页面。 |
2
0
Tapestry使用模板来定义静态内容。这些模板通常是带有占位符变量的html页面,占位符变量由框架动态地替换为一些代码。模板允许将不改变的事物与改变的事物分离开来。通常结构比行为更不容易改变。即使您想动态地更改组件的某些元素,您也要使用由动态填充数据的模板定义的组件。这个动态数据可以再次插入其他组件等。 |
3
0
静态结构并不意味着不能输出动态内容,也不意味着不能向组件添加组件。你不能在运行时将一个组件添加到另一个组件中。您可以使用其他组件定义页面或组件结构,但这些都是在呈现页面之前在模板中定义的,而不是在呈现页面时定义的。组件可以选择不渲染自身,渲染其模板的一部分(如果和除非组件),等等。 Tapestry的静态结构导致的少数实际情况之一是组件C不能在其中使用同一组件的另一个实例。 |