的页面组合是其特点。
通过组件+标签库实现Subview,但如需重用Layout,还要结合Tiles.
页面跳转
使用标签库html:link中写明目标URL,URL名称需要对照配置文件的path命名,与组件Action耦合。
URL名称是目标的组件名称,不涉及URL和路径等操作,方便稳固。
类似Struts,也需要在配置文件中查找,与组件分离。
参数传递
使用html:link时传递参数超过一个以上处理麻烦。
直接调用组件,直接赋予参数,没有参数个数限制
参数分离传递给组件
事件触发
通过表单提交submit激活,不能细化到表单里字段。
能够给于表单每个字段贴一个事件,事件组件必须实现PageListener接口
同Tapestry,事件组件必须实习ActionListener 接口
Struts组件编程模型
Struts实现组件编程时有一些复杂:经常为一个页面中需要引入多个组件而头疼,因为Struts中无法直接引入多个组件,必须绕一些圈子:
一般分两种情况:如果同一个Action就可以对付这些组件,那么在这种情况下有两个办法:
1.将这多个组件装入一个ActionForm中,如使用MapForm等机制;
2.手工将多个组件装入request/session等scope中,然后根据其名称在jsp中获得。
这两个方法都有缺点: 第一种办法经常一个ActionForm弄得面目全非,变成一个大杂烩,违反了OO分派封装的原则;第2种办法其实又回到jsp编程;
第二种情况,如果这些组件必须有预先由不同的Action来处理,每个组件必须经过Action -->ActionForm流程,在这种情况下有两种办法:
1.使用Tiles, 不同流程输出到同一个页面的不同区域。是一种并行处理方式。
2. 对多个流程首尾相连,第一Action forward结果是第二个Action,最后输出一个Jsp,在这个jsp中就可以使用前面多个流程的多个ActionForm了,这属于串行方式。
Struts组件模型缺点
Struts组件编程必须限定在Action/ActionForm/JSP这三个框框中做文章,难度相对比较大,而Tapestry/JSF则没有太多这些技术框框限制,两者在组件编程方面更让编程者自由一些,方便一些,这也是组件型框架的优势吧。
Struts标签库
在Struts中,经常需要使用标签库来显示组件ActionForm中内容,这就涉及到 上一页 [1] [2] [3] [4] 下一页
|