轉載請注意出處:http://blog.csdn.net/bettarwang/article/details/39801733
我們知道,如果要爲某個Action指定校驗文件,那麼就要將"Action名-validation.xml"的校驗文件放在與該Action在同一路徑下,並且在struts.xml中指定<result name="input>的值,在input對應的文件中加入<s:fielderror/>即可。此時如果輸入不符合校驗規則,就不會跳轉到相應的action,而是仍然跳轉回input文件,並顯示相應的校驗提示。
但是自己在指定了校驗文件之後,卻發現始終不起作用,後來終於發現問題,原來是自己貪圖方便,直接從別處複製過來校驗配置文件的dtd信息,但是這個複製過來的dtd信息跟自己現在這個版本的Struts所用的dtd信息並不相同,從而導致校驗不起作用。
解決方法很簡單,就是在lib中找到自己所用的xwork-core文件,比如我的是xwork-core-2.3.16.3.jar,用解壓工具查看其中的dtd文件,一般有多個,我查看的是xwork-validator-1.0.3.dtd,裏面內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!--
XWork Validators DTD.
Used the following DOCTYPE.
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
-->
<!ELEMENT validators (field|validator)+>
<!ELEMENT field (field-validator+)>
<!ATTLIST field
name CDATA #REQUIRED
>
<!ELEMENT field-validator (param*, message)>
<!ATTLIST field-validator
type CDATA #REQUIRED
short-circuit (true|false) "false"
>
<!ELEMENT validator (param*, message)>
<!ATTLIST validator
type CDATA #REQUIRED
short-circuit (true|false) "false"
>
<!ELEMENT param (#PCDATA)>
<!ATTLIST param
name CDATA #REQUIRED
>
<!ELEMENT message (#PCDATA|param)*>
<!ATTLIST message
key CDATA #IMPLIED
>
只要將下面的片段複製到校驗文件中即可:
<pre name="code" class="html"><!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
-->
後面嘗試了一下,發現用xwork-validator-1.0.2.dtd中的配置信息也可以,這應該只是版本的問題,但是一定要是自己的xwork-core支持的版本纔行。