zl程序教程

您现在的位置是:首页 >  其它

当前栏目

初学structs2,表单验证

验证 表单 初学
2023-09-27 14:20:23 时间

一、简单表单验证示例

structs.xml配置

<struts>
    <package name="validate" namespace="/validate" extends="struts-default"  >
        <action name="ValidateDemo" class="cn.hjp.validate.ValidateDemo">
            <result name="success" type="dispatcher" >/validate/index.jsp</result>
            <result name="input" type="dispatcher" >/validate/index.jsp</result>
        </action>
    </package>
</struts>

 

前端index页面部分代码:fielderror显示错误信息,如果前端页面HTML标签是使用的structs2标签构成,则可以不使用fielderror标签也能显示,如下面注释中代码

<%@ taglib prefix="s" uri="/struts-tags" %>

<!--
<body>
<s:form action="ValidateDemo" namespace="/validate" >
<s:textfield name="name" label="用户名" ></s:textfield>
<s:submit value="提交" ></s:submit>
</s:form>
</body>
-->
<body>
    <form action="/struts2-demo/validate/ValidateDemo.action" method="post" >
    <input type="text" name="name" /><input type="submit" value="提交"/>
    </form>
    <s:fielderror  fieldName="name" />
   <s:actionerror/>
   <s:actionmessage/>
</body>

 

验证判断代码写在validate方法中

  public class ValidateDemo extends ActionSupport {
        private String name;
        public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        System.out.println(this.toString());
        return SUCCESS;
    }

    @Override
    public void validate() {
        // TODO Auto-generated method stub
// 验证字段 if (this.name == null || this.name.equals("")) { addFieldError("name", "姓名不能为空"); }
     //验证的不是字段,没有指定字段的验证错误,也就是业务型错误,就根据情况使用下面两个,而前端页面对应添加<s:actionerror/>和<s:actionmessage/>structs2标签元素
    
addActionError("Action错误");//action错误
    
addActionMessage("提示信息");//提示信息
    } 
  } 

 使用structs2的标签构造的HTML元素时,自定义出现类型错误的显示信息

比如<s:textfield name="age" label="年龄"></s:textfield>,后台年龄字段为整数类型,如果填写成了字符类型,则会报错“Invalid field value for field "age"”;

自定义提示错误信息的方式就是在相应的Action包下,新建相应action名称命名的properties文件,文件内制定对应字段及其错误信息,示例如下

ValidateDemo.properties文件,内容invalidate.fieldvalue.age="年龄字段类型错误"