请原谅我;我对struts很陌生。我遇到了一个问题,即在页面加载时发生验证,而不是在实际提交表单时发生。我一直在搜索和搜索整个论坛,并没有任何运气。我显然做了不正确的事情,应该很容易确定,但我还没有找到我的问题。当页面加载而不是提交时发生struts验证
这里是我的struts.xml中的一个片段:
<action name="*Test" method="{1}" class="testClass">
<interceptor-ref name="defaultStack"/>
<result name="init">jsp/index.jsp</result>
<result name="input">jsp/index.jsp</result>
<result name="submit">jsp/results.jsp</result>
</action>
正如你所看到的,我有我要提交给results.jsp如果验证成功,一个动作。否则,我希望它再次显示我的index.jsp。据我所知,页面正确导航。我可以导航到app/initTest.action并提交我的表单,它会带我到结果页面并显示我的预期结果。我的问题在于验证。
看来好像验证工作,只是在错误的时间。我在与我的类相同的位置创建了一个[Action] -validation.xml,该操作绑定在该页面上,并且当页面最初加载时,我已经从页面上的此xml文件中看到错误消息。
下面是我在我的validation.xml文件:
<validators>
<field name="TestBean.idNumber">
<field-validator type="requiredstring">
<message>Please select an item.</message>
</field-validator>
</field>
</validators>
您提供的任何援助,将不胜感激!
谢谢!
@nmc, 我试图想象使用单独行动的选项。会是这样的吗?如果验证失败,它是否会重定向回原始表单页面?
<action name="*Test" method="{1}" class="testClass">
<result name="init">jsp/index.jsp</result>
<result name="submit">initTestResults</result>
</action>
<action name="*TestResults" method="{1}" class="testClass2">
<interceptor-ref name="defaultStack"/>
<result name="init">jsp/indexResults.jsp</result>
<result name="input">jsp/indexResults.jsp</result>
</action>
我想弄清楚哪个选项更适合我的目的。
感谢您的输入。
您可以尝试使用'@ SkipValidation'注释显示表单的操作方法。这适用于使用'validate()'方法进行手动验证。我不确定它是否适用于基于XML的验证。 – 2011-05-19 02:09:25