【SSH框架实现】Struts2【2】 传值 以及 validation 实现

做个简单的注册,简单到只有一个name:

  <form action="regist.action" method="post">
      name: <input type="text" name="name"><br />
      <button type="submit">regist!</button>
  </form>
regist.action先写好,

然后去struts.xml写regist

    <package name="regist" extends="struts-default">
            <action name="regist" class="com.struts2.TestE.regist" method="regist">
                <result name="success">/success.jsp </result>
            </action>
    </package>

这里连接到com.struts2.TestE.regist 类的 regist方法:

package com.struts2.TestE;

import com.opensymphony.xwork2.ActionSupport;

public class regist extends ActionSupport {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String regist(){
        return SUCCESS;
    }
}

可以看到我们直接return一个success,因为目前连接数据库先不写。

这时候不管输入什么都可以跳转到success.jsp页面的。


可以试试在regist打印出name,就是你输入的值。这是最基本的传值。传值分三种。这是最简单的一种。


 validation


这个相当于传值过来前先给过滤一下。

例如用户输入一个空值或者不符合规范的值,可直接驳回。

方法是在我们的regist类的同目录建一个xml文件,名字格式是

<同文件夹类名>-<struts.xml注册的请求函数名>-validation.xml

在这里即 regist-regist-validation.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="requiredstring">
            <message>姓名不得为空!</message>
        </field-validator>
    </field>
</validators>

标准格式就是上面这样。

field name="name" 的name就是表单提交上来的数据名。

  <message>姓名不得为空!</message>是返回的信息。

 <field-validator type="requiredstring"> 这个type有很多。

可以在xwork-core-2.3.15.3.jar里的com.opensymphony.xwork2.validator.validators的default.xml 里面看到type的值


为什么要跳转到这里呢,是为了查看一个特殊的东西

可以在type里发现有个是regex ,对这个就是正则表达式。

按着Ctrl 点击regex后面的class,可以转到

com.opensymphony.xwork2.validator.validators.RegexFieldValidator

在里面发现:


即插入正则表达式。

OK,凭借这个可以写xml了,回到regist-regist-validation.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="requiredstring">
            <message>姓名不得为空!</message>
        </field-validator>
        <field-validator type="regex" >
            <param name="regexExpression">\d{5,8}</param>
            <message>姓名必须是5-8字符!</message>
        </field-validator>
    </field>
</validators>
\d{5,8}即正则表达式,限制必须输入数字,并且是5到8位才可以。



好了,现在尝试即可实现功能了。

不过会发现我们的message还没用到。

这时候需要在我们的Index.jsp页面 写上
<s:fielderror />

错误信息就可以在这里出来了

当然也有个办法是

<s:form action="regist" method="post">
    <s:textfield name="name" label="姓名"></s:textfield>
    <s:submit value="注册"></s:submit>
</s:form>
用这个方法写表单会直接把错误信息写在上面。


这时候会遇到错误信息两个都有。


怎么能限制某一个呢?

<s:fielderror fieldName="name" />
给个name就好了。这个name就是fieldName





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值