随笔 - 170  文章 - 536  trackbacks - 0
<2006年3月>
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

我参与的团队

随笔分类(103)

搜索

  •  

积分与排名

  • 积分 - 410548
  • 排名 - 134

最新评论

阅读排行榜

    好久都没有去写点东西了,不过最近也没有太多的时间去专门研究一些东西,就把我在实践中的一些经验拿出来和大家分享。因为 iCustomer 这个使用 JSF 的项目,最近一直在尝试解决一些过去遗留下来的问题,比如说验证之类的,还有防止重复提交页面,最后加上一个日期转换的问题。
    先说一下验证碰到的一些问题了,验证的时候我使用的是 Shale 的 <s:commonsValidator> 组件,按照它提供的标准方法的话在应用中会碰到一些问题。按照标准的方法,我们应该在 <h:form> 中写这样的东西,<h:form onsubmit="return validateForm(this);">,但是这样在 JSF 中会存在问题,当表单中有一个以上的 Action 事件或者 ValueChange 事件,我们知道,JSF的事件触发时会提交表单,这是就会触发<h:form>这个onsubmit里面的方法,所以这样的话,任何事件都会触发验证,但我们的表单里只有一个保存的 Action,需要验证输入,而其它的 Action 或 ValueChange 并不要求执行验证,这样的话,标准的方法就不太适用了,我看公司项目组的方法是写个方法,在不需要的时候调一个 JavaScript 把这个方法 Cancel 掉,但这样也比较麻烦,我目前采用的方法就是在需要验证的 Action 里面加上这样的方法来进行验证,也就是这样 <t:commandButton id="save" value="#{msg['system.button.save']}" action="#{parameterBean.save}" onclick="return validateForm(this.form)"/> ,这样的话,就只在我们需要验证的几个地方进行验证。
    不过总的来说,Shale 提供的这种验证方式有时候可能会显得不够灵活,我们过去在 struts 中有两种方式,一种是针对 form 的验证,另一种是针对 action 的验证,如果我们要对某些表单元素在不同的 action 时执行不同的验证规则,就可以使用 action 验证了,但Shale 的这种方式就无能为力了。
    然后要介绍一个防止重复提交的方法。在网上找了很久,好像就是没有人关注这个问题似的,不过这个问题在 struts 中有很不错的方法,就是使用 token,其实我要介绍的也是和这个完全相同的解决办法,很简单,一句话解决问题。我们如果看了 Shale 的一些文档的话,会注意到 Shale 里面有 <s:token> 这个标签,对就是这个,我们只要在 form 里加入这个标签的话,就可以了,如果重复提交的话,会提示出错的,不过出错信息是英文的,找了个比较暴力的方法,把信息改成中文的了,分享一下了,用 WinRAR 打开 shale-core.jar\org\apache\shale\resources,里面有一个 Bundle.properties 文件,把这个文件拿出来,把 token.invalid 改成你需要的信息,再把这个文件塞回去就可以了,比较暴力了,仅供应急使用,不推荐。
    刚才出去帮人家看一个问题,经过做 JSF 那个项目组,想起来一个关于日期格式化的问题,拿出来说明一下了,对于中国用户,要把日期转换的 timeZone 设置成GMT+8才能转换正确,也就是这么写 <f:convertDateTime pattern="dd/MM/yyyy" timeZone="GMT+8"/>。
posted on 2006-03-07 09:57 steady 阅读(2966) 评论(2)  编辑  收藏 所属分类: JSF & Myfaces

FeedBack:
# re: 使用Shale巧妙解决JSF中的几个难题 2006-09-19 14:13 wmh
如果用了server端验证的话,上面的做法只是饶开了client端

s:token 在使用了valuechange 的form中也会有这种问题。
  回复  更多评论
  
# re: 使用Shale巧妙解决JSF中的几个难题 2006-09-19 14:16 wmh
valuechange一次就认为是一次submit了 之后就不能再submit了  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: