本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7591405
建立时间:2006年5月29日




[Tapestry]Tapestry中Sumbit/ImageSubmit的属性selected和tag
软件技术

lhwork 发表于 2006/7/11 17:54:44

个人认为Submit/ImageSubmit标准组件的两个属性selected和tag的设置比较罗嗦,可能是性能和灵活性的一种权衡吧。 其中,selected指定页面类的一个属性,tag设置该页面属性的值。selected和tag组合起来可以使页面类知道用户点击了哪个提交按钮。 Tapestry已经将多个提交按钮绑定于不同的监听方法上,似乎在很多web应用中并不需要知道用户点击了哪个提交按钮。 我现在正在做的项目却需要根据不同的提交按钮而进行不同的数据校验! 此时,我的实现方法是 1,SubBasePage中提供一个属性submitName用于保存用户点击的提交按钮的名字。 2,修改AbstractSubmit的handleClick方法: if (cycle.getPage() instanceof SubBasePage) {             SubBasePagep = (SubBasePage) cycle.getPage();             if (cycle.getParameter(this.getId()) != null                     && !"".equals(cycle.getParameter(this.getId()))                     || cycle.getParameter(this.getId() + ".x") != null                     && !"".equals(cycle.getParameter(this.getId() + ".x")))                 p.setSubmitName(this.getId());//设置提交按钮名字         } 并修改Submit和ImageSubmit的父类为修改后的AbstractSubmit。 这样一来,在页面类中就可以根据用户点击的提交按钮的不同而进行不同的业务处理了。 3,但是,在展现页面时,Tapestry根据各组件在页面上的显示顺序进行生成,如果提交按钮是在页面的后部,则前部的输入组件的校验如果是基于该提交 组件的话,SubBasePage的submitName没有及时更新,则数据校验会出现问题。所以,需要修改Form组件。覆盖父类的 renderBody方法。 public void renderBody(IMarkupWriter writer, IRequestCycle cycle) {                for (int i = 0; i < this.getBodyCount(); i++) {             if (this.getBody()[i] instanceof AbstractSubmit) {                 ((AbstractSubmit) this.getBody()[i]).updateSubmitName(cycle);//抽象提交类更新submitName             }         }         super.renderBody(writer, cycle);     } AbstractSubmit: public void updateSubmitName(IRequestCycle cycle) {         if (cycle.getPage() instanceof XtradeBasePage) {             XtradeBasePage p = (XtradeBasePage) cycle.getPage();             if (cycle.getParameter(this.getId()) != null                     && !"".equals(cycle.getParameter(this.getId()))                     || cycle.getParameter(this.getId() + ".x") != null                     && !"".equals(cycle.getParameter(this.getId() + ".x")))                 p.setSubmitName(this.getId());         }     }


阅读全文(3405) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.309 second(s), page refreshed 144771820 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号