1. 程式人生 > >搭建SSH框架時遇到的問題及解決方法

搭建SSH框架時遇到的問題及解決方法

1、xxx-validator.xml配置檔案驗證不起作用

解決思路:

我是找到xwork-validator-1.0.2.dtd檔案後發現xxx-validator.xml配置檔案的格式不正確 ,改過之後就能驗證了

很多部落格說明了自己查詢的方式,最後都指明瞭是因為配置檔案格式不正確的原因。出現這種問題的時候,應該從下面4個部分考慮: 
1:檔名是否是 LogInAction-validation.xml 第一部分的名字必須與action類名對應一致。 
2:struts.xml中同一個action下面,要配置input型別的返回結果,如同:

<action name="login"
class="com.allen.ssh.action.LogInAction"> <result name="success">/Welcome.jsp</result> <result name="error">/Register.jsp</result> <result name="input">/Register.jsp</result> </action>
  • 1
  • 2
  • 3
  • 4
  • 5

3:然後是檢查 LogInAction-validation.xml 中指定的屬性名字,是否與JSP頁面中的屬性名字一致。 
4:然後是 LogInAction-validation.xml 檔案格式是否正確,主要是指如下這一部分:

二 問題的根源 
有一定的開發經驗的童鞋,不管步驟是如何,都會整體的檢查下來,因為這種校驗檔案只要與action類放在同一個包下,是自動載入的,無須關心是否還要在哪裡配置。 
但是我想說的是造成這種問題的根源,一般情況下,大家都是搜尋某篇文章,然後跟著做例子,可是有時候使用的struts的版本不一致,貿然的使用了不同版本的配置,很可能會導致這種問題。 
所以,參考別人做的東西時候,主要是看思路,具體到自己去實現的時候,要去自己下載的原始碼包下面,找到對應的檔案:struts-2.3.16.3/src/xwork-core/src/main/resources/xwork-validator-1.0.3.dtd 
開啟看一下,裡面說的:

<!--
  XWork Validators DTD.
  Used the following DOCTYPE.
</pre><p></p><p></p><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">
-->
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

那麼直接拷貝過去使用即可。要知道1.0.2版本還是如下配置的:

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"  
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> 
  • 1
  • 2

所以不管直接使用還是修改為了 1.0.3,都會導致校驗檔案不起作用。

三 開發建議 
從這個問題可以看出,再使用開源的框架時候,一定要使用軟體本身自帶的例子配置檔案說明,而不是直接去網路上拷貝。這應該是一個早就形成的習慣。

最後,以struts為例子,相關DTD檔案,一般在下面的包裡: 
struts-2.3.16.3/src/ 
如果是validator:struts-2.3.16.3/src/xwork-core/src/main/resources/xwork-validator-1.0.3.dtd 
如果是標籤庫:/Users/zhaoxin/Dev/struts-2.3.16.3/src/core/src/main/resources/struts-2.3.dtd 
如果上面方法都用了還是沒有驗證效果,請考慮下面方法:

其次驗證下載的Struts版本與Xwork是否一致。如果不一致也會導致驗證失敗。(其次考慮)

關於為什麼要版本一致在我的之前部落格有介紹。歡迎瀏覽: Struts2與XWork 
如果不一致,請下載版本一致,例如我的Struts2 版本是struts2-core-2.0.11.1 
那我的Xwork版本需要是xwork-2.0.1。下載下來xwork之後使用解壓軟體開啟檔案。裡面會有個xwork-validator-1.0.2.dtd檔案即是我們要使用來寫XML的模板檔案。使用編輯開啟這個檔案,找到下面程式碼:

<!DOCTYPE validators PUBLIC 
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
  • 1
  • 2
  • 3

先在瀏覽器上使用IE開啟http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd開啟這個地址,如果不存在說明該檔案已經不是dtd約束檔案了,不能使用這個作為Validation.xml的描述檔案了,怎麼辦呢? 
開啟網址,發現opensymphony的網址已經遷移走了,因為xwork的東西已經併入struts2中,成為apache的一部分.所有的dtd已經移交到http://struts.apache.org/dtds/ 這個地方.開啟這個網址下載你需要的dtd檔案。struts2的校驗器的規範要改成:

<!DOCTYPE validators PUBLIC 
        "-//Apache Struts//XWork Validator 1.0.2//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">