2010-06-14 80 views
2

我有一个Struts 2应用程序,验证工作得很好,它验证必要的字段并引发足够的错误消息。问题出现在一个非常具体的位置,即字符数5838!Struts 2验证中的奇怪行为

在我validation.xml文件我已经许多领域定义的,其中之一是

<field name="idState"> 
     <field-validator type="requiredstring"> 
     <param name="expression"><![CDATA[ 
      idNumber == null || idNumber.trim().length() == 0 
     || (idState != null && idState.trim().length() > 0) 
      ]]></param> 
     <message>Please enter your State.</message> 
     </field-validator> 
    </field> 

(请原谅我的代码格式化!) 从技术上讲,我应该得到的错误消息

"Please enter your State." 

到我的娱乐我只得到

"Please enter yo". 

而这发生在位置5838(即。错误消息截断)。

现在,如果我在标签中添加一个空格,因为我得到

"Please enter y". 

我注意到,这仅5838.所有消息之后,这是正确显示之前发生的位置。

关于发生了什么的任何线索?

+1

这个问题与错误消息相关而不是验证器?什么是字符数字5838? – Tarski 2011-01-20 11:10:53

回答

0

对我来说这似乎不是一个与这个特定验证器相关的问题。听起来更像是解析整个validation.xml文件的问题。也许错误消息仅仅因为它在读缓冲区中间而被破坏。

发生了类似的事情,这是一个非UTF-8文件中的UTF-8字符。 我的建议是检查整个文件的可能的解析问题,当然在位置5838之后。