我在struts上运行了一个j2ee Web应用程序。我正在使用验证XML进行表单验证。我有一个窗体中的多个按钮的问题。我有保存,删除和取消按钮。问题是我想要在单击删除按钮时不执行验证。我该怎么做。
答案 0 :(得分:1)
没有像Struts那样使用Validation框架,但是你可以在动作表单中覆盖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);
}
答案 1 :(得分: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>