【问题标题】:Struts 1 form validationStruts 1 表单验证
【发布时间】:2013-04-23 19:35:20
【问题描述】:

我在遗留项目中使用 struts 1。我想验证表格。我已经读过很好的article 了。但是我不明白如果表单的 validate 方法返回非空 ActionErrors,struts 会做什么。我已经指定了validate="true"input="somepage.jsp",但是如果我的表单验证没有通过,我会得到一个空白页。据我了解,它必须保持在输入中指定的页面?我说的对吗?

编辑

 <action path="/struts/BlaBlaAction" 
                type="com.example.BlaBlaAction"
                name="BlaBlaForm"
                validate="true"
                scope="request"
                input="/struts/blablainput.jsp">
              <forward name="someaction" path="/struts/AnotherAction.do"/>
              <forward name="error" path="/error.html" redirect="true"/>
 </action>

文件夹 struts 位于我的应用程序的根目录中

【问题讨论】:

    标签: struts-1


    【解决方案1】:

    您还需要在 somepage.jsp 中使用&lt;html:errors/&gt; 标记显示验证错误

    如果表单的 validate 方法返回非空 ActionErrors,Struts 将重定向到您定义为输入的 JSP。然后如果你在输入 JSP 中有&lt;html:errors&gt;,所有的 ActionErrors 都会被迭代并显示出来。

    【讨论】:

    • 如果我不使用 显示这些错误,我会得到一个空白页吗?
    • 是的, 是显示 validate() 抛出的错误的方式,如果没有,struts 将无法神奇地显示它们。
    • 查看 struts-config.xml 中的动作映射条目和项目的文件夹结构会很有帮助。此时我能想到的是,“输入”中提到的路径没有正确解析到 somepage.jsp 所在的位置。
    【解决方案2】:

    您可能忘记了 struts XML 配置中的“失败”转发。看这个例子:

    <action path="/LogonSubmit" type="app.jcj.LogonAction" name="logonForm" 
               scope="request" validate="true" input="/pages/Logon.jsp">
        <forward name="success" path="/pages/Welcome.jsp"/>
        <forward name="failure" path="/pages/Logon.jsp"/>
    </action>
    

    【讨论】:

    • 所以我也必须在我的操作中指定这个“失败”?
    • 是的,如果您愿意,您可以发送到与成功相同的页面,但您需要明确声明这一点。尝试告诉我们此解决方案是否有效
    • @maks 您不需要“失败”结果;通常,您将使用getInputForward() 方法返回到定义为input 的页面以进行操作。您可能转发失败,但如果它与您的输入相同的页面,请使用框架为您提供的内容。
    • 根据我提供的链接,动作类失败的情况下不需要转发到某个页面,是不是例子中的错误?
    • @maks 这不是错误,而是设计决定。默认的 Struts 1 RequestProcessor 将自动调用表单的 validate 方法并在出现错误时转发到 "input" 属性的页面。使用自动验证功能是否是一个好主意值得商榷,但这取决于您的实际需要。如果您手动拨打validate() 或有其他失败方式,您可以自己拨打getInputForward()。这一切都取决于。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多