tapestry 使用 Block和RenderBlock组件
关键字: tapestrytapestry的优点是 组件化开发 以及 页面模板 的可以用所见即所得的编辑器设计。
这使得以前的经验不适用了
比如 struts 的 titles 标签和webwork 的sitemesh 标签使得mvc框架可以支持 Decorator模式 ,让界面有一致的布局
而 tapestry 以page为中心的概念很难使用上面2个标签库。
解决方法:使用 Block和RenderBlock组件 让一个母page运行时显示指定的子组件
就好像word打开一个文档,菜单都一样,文档内容不同
1 把所有的子内容写成组件, 定义各个子Block组件,一个Block包含一个子组件
子组的类件继承自BaseComponent类,可以使用html模板
2 母page的模板设计成3个区域 标题域 菜单域 和 内容域(层和table皆可)
3 母page 的 类 需要 一个属性(String类型) 来保存 需要显示的子 Block的jwcid
@Persist
@InitialValue("literal:blck1a")
public abstract String getCounter();
public abstract void setCounter(String counter);
4 菜单域的各个链接 修改 母page 的 类 的属性,用来指明需要画的block
////
public void doClick(String increment)
{
setCounter(increment);
}
5 内容域中的RenderBlock组件 其block参数邦定到 母page 的 类 的 属性上
Page content goes here
/////////////////////
public Block getSelectedBlock() {
String id4cmp = getCounter();
IComponent mycmp = null;
mycmp = getNestedComponent(id4cmp);
//mycmp =getContainer().getComponent("blck1a");
return (Block) mycmp;
}
这样可以在一个page上的一个位置显示不同的组件来实现 Decorator模式的效果
- 21:09
- 浏览 (4099)
- 论坛浏览 (2158)
- 评论 (1)
- 发布在 Tapestry 圈子
- 相关推荐
发表评论
该博客是同时发布到论坛的,无法评论在论坛已被锁定的帖子
最新评论
-
daedoe Form Designer 在 ...
...运行有点问题。。。。插入FORM的控件的事件无法设置了。。。
-- by zzsczz -
TinyPascal...
TinyPascalView.h 最后3行删除掉即可 /* #ifndef ...
-- by zzsczz -
TinyPascal...
这么少的代码就可以实现如此强大的功能,C++/Spirit足以令C#和Java汗 ...
-- by wdx04 -
vc6 上安装stlport和boos ...
2005bug太多,2003还是能更好一些。
-- by simohayha -
vc6 上安装stlport和boos ...
为什么不用VC 2005呢?VC 6是很老的编译器了,对模版支持也不好。
-- by bigpanda







评论排行榜