论坛首页 Java企业应用论坛

被webwork RegexFieldValidator玩惨

浏览 3730 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-02-22  


今天用了下webwork RegexFieldValidator,按照文档定义了一个
<field-validator type="regex">
         <param name="expression">
                  <![CDATA[([aAbBcCdD][123][eEfFgG][456]);]]>
          </param>
</field-validator>

不行,困惑,查看java doc关于regex的文档,webwork文档,xwork文档,还是不行,google,baidu,yahoo search...,折腾半天死活都不行,绝望中 ,反省最近是否有rpwt
最后发现跟文档有一点区别,于是改为
<field-validator type="regex">
               <param name="expression"><![CDATA[([aAbBcCdD][123][eEfFgG][456]);]]></param>
</field-validator>

通过,晕死,进一步调查,原来是myeclipse把我的xml文件格式化了,把<![CDATA[换了下行,webwork就处理不了的,把expression读成了一个有若干空格的字符串,郁闷啊,不知道他是用什么来处理xml的,我的spring配置文件中也有若干类似的<![CDATA[却没问题
   发表时间:2006-02-22  
这个,估计在读取配置文件的时候,前后trim一下就好了,帮你提交了一个bugfix,是不是这么改我就没有试过,不过按照你的说法应该是这样的:

http://jira.opensymphony.com/browse/WW-1205
0 请登录后投票
   发表时间:2006-02-22  
trim没用,它压根就没有读到cdata里面的值,只是一个空的串"              ...            "
0 请登录后投票
   发表时间:2006-02-23  
CafeBabe 写道
trim没用,它压根就没有读到cdata里面的值,只是一个空的串"              ...            "


那难道是你的JDK包含的JAXP的bug?webwork的代码看起来没有啥问题。
0 请登录后投票
   发表时间:2006-02-23  
it is really strange, I am using jdk1.5:(
0 请登录后投票
   发表时间:2006-02-23  
robbin 写道
这个,估计在读取配置文件的时候,前后trim一下就好了,帮你提交了一个bugfix,是不是这么改我就没有试过,不过按照你的说法应该是这样的:

http://jira.opensymphony.com/browse/WW-1205

加trim也没有用,问题是在于这个代码:
paramElement.getFirstChild().getNodeValue();

对于CafeBabe的写法,paramElement会有3个child node:
1. TextNode
2. CDataNode
3. TextNode

getFirstChild就返回了第一个TextNode,所以就是一个长长的空白String

而且这个issue很难resolve,还是不要换行,老老实实地写一行吧。
0 请登录后投票
   发表时间:2006-02-23  
Readonly 写道
robbin 写道
这个,估计在读取配置文件的时候,前后trim一下就好了,帮你提交了一个bugfix,是不是这么改我就没有试过,不过按照你的说法应该是这样的:

http://jira.opensymphony.com/browse/WW-1205

加trim也没有用,问题是在于这个代码:
paramElement.getFirstChild().getNodeValue();

对于CafeBabe的写法,paramElement会有3个child node:
1. TextNode
2. CDataNode
3. TextNode

getFirstChild就返回了第一个TextNode,所以就是一个长长的空白String

而且这个issue很难resolve,还是不要换行,老老实实地写一行吧。


我测试了一下其他的Validator,例如:
	&lt;field name="age"&gt;
		&lt;field-validator type="int"&gt;
			&lt;param name="min"&gt;
				 13 
			&lt;/param&gt;
			&lt;param name="max"&gt;
				 29 
			&lt;/param&gt;
			&lt;message key="error.age"/&gt;
		&lt;/field-validator&gt;
	&lt;/field&gt;

这样就完蛋了,13和29就出不来,即使在一行,只要前后有空格,也出不来,只要加trim就好了。

所以我认为trim还是得加,但是那种情况,quake是否去jira那里和Rene说明一下?
0 请登录后投票
   发表时间:2006-02-23  
Thanks, I can not press shift+ctrl+f freely anymore when editing validation.xml
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics