当前位置: 首页 > 面试题库 >

Struts2中的表单验证

万俟穆冉
2023-03-14
问题内容

页面包含如下表格。

1)如果我插入表单 validate =“ true” ,则在页面加载此表单后,将请求提交到邮件操作(此时尚未创建验证xml)。

2)创建验证xml后(与动作相同),然后向该页面的控制请求返回的动作返回404页面。

我错过了什么?

<s:form action="mail" method="post">
<s:textfield name="name" key="Your name" size="20" />   
<div style="clear: both;margin-top:10px"></div>
<s:textarea label="Comment" name="comment" cols="65" rows="5"/>
<s:submit method="mail" key="Send" align="left" 
    style="width:100px; height:35px; margin-top:20px"/>
</s:form>

验证XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
    "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <field name="name">
        <field-validator type="required">
            <message>Please enter a user name</message>
        </field-validator>
    </field>
    <field name="comment">
        <field-validator type="required">
            <message>Please enter your message</message>
        </field-validator>
    </field>
</validators>

如果我不添加验证,那么一切都会正常进行。

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
  <constant name="struts.devMode" value="true" />

  <constant name="struts.custom.i18n.resources" value="ApplicationResources" />

  <package name="default" namespace="/" extends="struts-default">

        <global-results>
            <result name="Exception">/error404.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Throwable" result="Exception" />
        </global-exception-mappings>

        <!-- loads page -->
        <action name="main" 
            class="com.user.action.LoginAction" method="main">
            <result name="success">/main.jsp</result>
        </action>

        <!-- mail action -->
        <action name="mail" class="com.user.action.LoginAction" method="mail" >
            <result name="success">/main.jsp</result>
        </action>

  </package>
</struts>

问题答案:

INPUT是Struts2提供的预定义结果之一;

基本上,如果您的操作发送的参数不正确(转换错误,例如将a发送"abc"IntegerAction变量),或者未通过验证,则工作流拦截器将返回INPUT结果并遵循在struts配置中指定的路径该行动。

您的问题是INPUT,尽管应该总是定义,但您尚未为“动作” 定义任何结果。

您还可以将全局输入结果设置为后备,但要小心……通常,如果要发送的页面INPUT与发送请求的位置相同,则要转到的页面。

如果出现INPUT结果,execute()则不会执行您的Action方法(例如),因此,如果您在该方法中加载常用数据(例如选择框内容),将不再可用。



 类似资料:
  • 主要内容:简单UI标签:,组 UI 标签:,选择 UI 标签:form 标签的列表是Struts的UI标签的一个子集。这些标签可以帮助渲染中需要Struts Web应用程序和用户界面可以分为三类。本章将带你通过所有三种类型的UI标签: 简单UI标签: 我们已经使用这些标签已经在我们的例子中。让我们来看看一个简单的一些简单UI标签的视图页面email.jsp: 如果你是知道的HTML,那么所有使用的标签是很常见的HTML标签与一个额外前缀s:随着每个标签和不同

  • 是否有一种简单的方法来

  • 我已经创建了一个删除对象的表单,但是我需要检查想要删除对象的用户是创建该对象的用户。我希望在表单(以及视图)中检查它,因为它是一个业务约束。在init、delete或clean方法中,哪里是检查的最佳位置?

  • 我刚刚制作了一个注册表单,在添加最终验证(MySQL验证)时遇到了一个问题。 这是我得到的错误:解析错误:语法错误,意外的'elseif'(T_ELSEIF)在C:\xampp\htdocs\Signup\包含\第72行的signup.php 第72行已标记,以帮助您解决此问题。 如果我注释和之间的所有内容,一切正常(除了我没有用户名验证的事实)。 如果你想知道$用户名是什么: 我在SO上读到了一

  • 问题内容: 我想在管理员更改表单中强制使用整个内联表单集。因此,在当前情况下,当我在“发票”表单(在“管理员”中)中单击“保存”时,内联订单表单为空白。我想阻止人们创建没有关联订单的发票。 有人知道这样做的简单方法吗? 在此实例中,模型字段上的常规验证(如)似乎不起作用。 问题答案: 最好的方法是定义一个自定义表单集,使用一种干净的方法来验证至少存在一个发票订单。

  • 我在Android中开发了一个登录表单。我在这里使用了验证。我必须填写任何人(用户名或密码),然后我的应用程序应该显示成功!并应转移到其他活动。 但是,如果两个字段都为空,则不应显示成功消息,而应显示Login fail!!!。 请帮我这个。 这是我的webservice代码: