Struts2表单验证提交报错

填个小坑花了这么长时间真的好吗再见

将要提交的表单edit.jsp:

<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: joey
  Date: 18-1-18
  Time: 下午7:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Struts2 Form Tags - Edit Person</title>
    <link type="text/css" rel="stylesheet" href="../css/default.css">
</head>
<body>
<h3>Update Information</h3>
<p>Use the form below to edit your information</p>

<s:form action="save" method="POST">
    <s:textfield key="personBean.firstName"/>
    <s:textfield key="personBean.lastName"/>
    <s:textfield key="personBean.email"/>
    <s:textfield key="personBean.phoneNumber"/>
    <s:select key="personBean.sport" list="sports"/>
    <s:radio key="personBean.gender" list="genders"/>
    <s:select key="personBean.residency" list="states" listKey="stateAddr" listValue="stateName"/>
    <s:checkbox key="personBean.over21"/>
    <s:checkboxlist key="personBean.carModels" list="carModelsAvailable"/>
    <s:submit key="submit"/>
</s:form>
</body>
</html>


struts.xml:

<action name="save" class="org.apache.struts.edit.action.EditAction" method="execute">
    <result name="success">/form-tags/thankyou.jsp</result>
</action>


后台处理方法:

public String execute()  {
    editService.savePerson(getPersonBean());
    return SUCCESS;
}


表单配置文件EditAction.properties:

personBean.firstName=First Name
personBean.lastName=Last Name
personBean.email=Email Address
personBean.phoneNumber=Phone Number (999-999-999)
personBean.sport=Favorite sport
personBean.gender=Gender
personBean.residency=State resident
personBean.over21=21 or older
personBean.carModels=Car models owned
submit=Save Changes


表单验证配置文件EditAction-validation.xml:

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <validator type="requiredstring">
        <param name="fieldName">personBean.firstName</param>
        <message>First name is required.</message>
    </validator>
    <validator type="requiredstring">
        <param name="fieldName">personBean.lastName</param>
        <message>Last name is required.</message>
    </validator>
    <validator type="requiredstring">
        <param name="fieldName">personBean.email</param>
        <message>Email address is required.</message>
    </validator>
    <validator type="email">
        <param name="fieldName">personBean.email</param>
        <message>Email address not valid.</message>
    </validator>
    <validator type="requiredstring">
        <param name="fieldName">personBean.phoneNumber</param>
        <message>Phone number is required.</message>
    </validator>
    <validator type="regex">
        <param name="fieldName">personBean.phoneNumber</param>
        <param name="regex"><![CDATA[\d{3}-\d{3}-\d{4}]]></param>
        <message>Phone number must be entered as 999-999-9999.</message>
    </validator>
    <validator type="fieldexpression">
        <param name="fieldName">personBean.carModels</param>
        <param name="expression"><![CDATA[personBean.carModels.length > 0]]></param>
        <message>You must select at least one car model.</message>
    </validator>
</validators>


访问页面:



填写符合验证条件的信息并不会出现异常,但是不符合条件的信息提交后报错:


其实很容易看出来,在struts.xml 配置中应该加个 result 标签,因为验证表单未通过时struts2会自动跳跳转到 input 这个 result 中,我们需要为 save.action 再指定一个

<result name="input">/form-tags/edit.jsp</result>

此时页面已经可以正常提交并处理。OK

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值