2012-04-21 134 views
1

我在一段時間內使用了Struts2,但我仍然很懷疑Struts2驗證。Struts2驗證

我使用了XML驗證,或方法addFieldError()驗證,但是當我第一次來到輸入表單頁面,用struts標籤頁,以及<s:form>,我不能就這麼去這個頁面由HREF - 鏈接,我必須通過另一個動作,我讀了帶有struts標籤的頁面jsp必須來自一個動作。

而且我通常創建一個Action只是爲了重定向到這個輸入頁面,在​​方法中只是「成功」而且這個動作的作用是去合法的輸入頁面,並且在處理輸入表單input-page ,我選擇「輸入」結果仍然是這個輸入頁面。

所以,我覺得這樣做不舒服,我總是有一個GoToSiteAction,只是第一次去輸入頁面。

所以,我真的需要你的幫助!!

+0

這是標準的方式,因爲S2需要初始化一些組件以便正常工作並請求shd通過s2調度程序過濾器 – 2012-04-22 02:28:00

回答

0

您沒有使用或不使用struts2-conventions插件來獲得完整的效果。請參閱:http://struts.apache.org/2.1.6/docs/convention-plugin.html在此頁面搜索字符串「操作和結果到模板映射的示例」並考慮下面的表格。

在將struts2-conventions-plugin jar添加到您的項目之後的未來,將後綴「-input」添加到所有未來表單的末尾。

假設我們創建的窗體中添加一個新員工:

/WEB-INF/content/add-employee-input.jsp 

Struts2的表單標籤將引用簡稱大概在名字類似com.mypackages.struts2.AddEmployee Java類「新增員工」的行動,那麼如果添加 - 員工行爲驗證失敗,則返回「輸入」並再次呈現「添加員工輸入」表單。然而,我們不需要創建「add-employee-input」動作,約定插件會自動爲我們執行此操作......因此,如果我們希望通過引用它來直接輸入表單,這非常方便。

試一試,你會明白我的意思。

+0

是的,謝謝回覆。但我仍然將input.jsp放在結果「input」中,以便AddEmloyee Action回調,如果驗證是錯誤的,並且如果我第一次訪問該輸入網站,我會看到一些錯誤字段(例如:用戶名是空白...,因爲輸入站點由AddEmployee Action處理) – user1348567 2012-04-22 08:52:39

+0

@ user1348567然後,您的操作被錯誤地寫入 - 「輸入」結果不應該應用驗證,「輸入」操作方法是驗證跳過的方法之一攔截器。 – 2012-04-22 15:29:50

1

使用輸入字段,創建一個動作,並使用相同名稱的驗證XML文件作爲Java文件名 例如:AddInput.java xml文件:AddInput-validation.xml中 把它在同一個包。

像這樣在xml文件中編寫表單所需的所有驗證。

<field name="U_Id"> 
    <field-validator type="requiredstring" short-circuit="true"> 
    <message>Affiliate Id cannot be empty</message> 
    </field-validator> 
</field> 
<field name="Password"> 
    <field-validator type="requiredstring" short-circuit="true"> 
    <message>Password cannot be empty</message> 
    </field-validator> 
    <field-validator type="stringlength"> 
<param name="minLength">5</param> 
<param name="maxLength">30</param> 
<message>Password cannot be less than 5 or more than 30</message> 
</field-validator> 
</field> 

當你打的動作會先打驗證XML和檢查驗證,然後處理動作類部分。