2010-04-23 60 views
0

我有一個運行在struts上的j2ee web應用程序。我使用驗證XML進行表單驗證。我在一種形式的多個按鈕有問題。我有保存,刪除和取消按鈕。問題是我想要點擊刪除按鈕時不執行驗證。我該怎麼做呢。Struts表單驗證不執行驗證取決於點擊按鈕

回答

1

在Struts中沒有使用過多的驗證框架,但是您可以在操作表單中覆蓋validate()方法。

org.apache.struts.validator.ValidatorForm是Validator插件的Struts入口點。 ValidatorForm覆蓋ActionForm的validate()方法並將驗證委託給Validator。

如果覆蓋了validate()方法在你的形式,只在需要時調用一個在ValidatorForm中,像你可能會跳過驗證您想要的按鈕:

public ActionErrors validate(ActionMapping mapping, 
           HttpServletRequest request) { 
     if (/* check for clicked button*/) { 
     //skip validation and just return empty (i.e. no error) 
     return new ActionErrors(); 
     } 
     // else, delegate to the validator framework 
     super.validate(mapping, request); 
    } 
0

我也受到這種限制受挫。我通過在表單內創建一個輸入按鈕來創建「取消」類型的功能,並使用url標籤作爲設置瀏覽器位置的動作。通過這種方式,表單上的驗證只會觸發提交,但不適用於我們的特殊取消按鈕。我無法使其跳過一個按鈕或另一個的驗證,當兩者都是submit類型時。有了這個解決方案,客戶端驗證也能正常工作。

<sx:form validate="true" action="someAction"> 
    <sx:submit value="Save Changes" theme="simple"/> | 
    <sx:url action="umhome" id="cancel"></sx:url> 
    <input type="button" value="Cancel" onclick="return window.location = '<sx:property value="%{#cancel}"/>'; "/> 
</sx:form>