0

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

我希望 struts 验证我的表单。我添加了一个MyAction-validation.xml,它工作得很好。(我说得很好,因为它没有在客户端验证。我已将<s:form/>标签的 validate 属性设置为 true)

首先,它给我提供了一些错误并用谷歌搜索我得到我应该添加一个带有输入名称的结果。所以现在我在我的操作中得到了一个带有输入名称的结果,但我并没有很好地理解它是如何工作的以及为什么。

当 myAction.action url 调用我的操作时,我的操作返回一个普通表单,并且当提交表单时,数据直接进入操作参数并保存在数据库中。然后将显示填写好的表格并显示成功消息。表单字段应在提交时进行验证。但是只要调用该操作,它们就会被验证。我尝试@SkipValidation了注释,但它完全取消了验证。即使我在执行方法中调用 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. 什么是输入结果名称,为什么我必须将其添加到操作结果中?
4

1 回答 1

2
  1. 就像你说的那样,通过将 validate 属性设置为 true。
  2. 通过使用不同的操作来显示表单,或者通过创建一个跳过 GET 验证的拦截器(这就是我以前做的)等。
  3. “输入”是验证失败时使用的结果,尽管您可以更改它。如果验证失败(默认情况下,类型转换也失败)它必须去某个地方,“输入”结果就是哪里。
于 2013-01-06T18:59:38.973 回答