如何在表单提交之前禁用struts 2验证?

时间:2013-01-06 18:53:08

标签: struts2 struts struts-config struts-validation

我正在用struts2做一个项目,Hibernate。

我希望struts验证我的表单。我添加了MyAction-validation.xml,效果相当不错。 (我说的相当不错,因为它没有在客户端验证。我已将<s:form/>标记的validate属性设置为true)

首先它提供了一些错误并谷歌搜索我得到了我应该添加输入名称的结果。所以现在我在我的行动中有一个输入名称的结果,但却不了解它的工作原理和原因。

我的操作在myAction.action url调用时返回一个普通表单,当提交表单时,数据直接转到操作参数并保存在数据库中。然后将显示填充的表单以及成功消息。表单字段应在提交时进行验证。但只要调用操作,它们就会被验证。我尝试了@SkipValidation注释,但它完全取消了验证。即使我在execute方法中调用validate方法,它也不会运行。我通过一些System.out.println行测试了它。我在struts.xml中的操作定义如下:

<action name="ShowAddItemPage" class="action.clerk.ShowAddItemPage">
  <result name="success" type="tiles">addItem</result>
  <result name="generalError" type="tiles">clerkGeneralError</result>
  <result name="input" type="tiles">addItem</result>
</action>
  1. 如何在客户端进行验证?
  2. 如何在表单提交时运行验证并在应用程序提供表单字段时禁用它?
  3. 什么是输入结果名称?为什么我必须将其添加到操作结果?

1 个答案:

答案 0 :(得分:2)

  1. 将validate属性设置为true,就像你说的那样。
  2. 通过显示表单的不同操作,或者通过创建一个在GET上跳过验证的拦截器(这就是我以前做的事情)等等。
  3. “input”是验证失败时使用的结果,但您可以更改它。如果验证失败(默认情况下,也输入转换失败),它必须去某处,“输入”结果就在哪里。