gpt4 book ai didi

java - struts 验证发生在页面加载时而不是提交时

转载 作者:行者123 更新时间:2023-12-03 06:27:13 26 4
gpt4 key购买 nike

请原谅我;我对 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 并提交我的表单,它将带我进入结果页面并显示我的预期结果。我的问题在于验证。

验证似乎正在起作用,只是在错误的时间。我在与该操作绑定(bind)的类相同的位置创建了一个 [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>

我正在尝试找出哪个选项更适合我的目的。

感谢您的意见。

最佳答案

正如 nmc 所说,验证会针对该操作而触发,这就是导致验证发生的原因。但是,您仍然可以执行此操作,而无需将其分成两个不同的操作。

首先,您可以通过删除 init 方法并仅使用 input 来解决此问题 - 因此您的初始 url 将是 inputTest 而不是 initTest。默认情况下,验证拦截器不会在输入法上触发。这就是通常的处理方式,也是我安排所有行动的方式。

如果您设置使用 init,您实际上可以向验证拦截器指定从验证中排除哪些方法。您可以将 xml 更改为如下所示:

<action name="*Test" method="{1}" class="testClass">    
<interceptor-ref name="defaultStack">
<param name="validation.excludeMethods">init,input</param>
</interceptor-ref>
<result name="init">jsp/index.jsp</result>
<result name="input">jsp/index.jsp</result>
<result name="submit">jsp/results.jsp</result>
</action>

使用此 xml 只是告诉验证拦截器不要为 init 或输入方法触发。

只需几个不同的解决方案即可让您仅使用一个操作类。

关于java - struts 验证发生在页面加载时而不是提交时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6051056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com