Struts2中指定的校驗文件不起作用的原因

          轉載請注意出處: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支持的版本纔行。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章