概述
做个简单的注册,简单到只有一个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
最后
以上就是笑点低月饼为你收集整理的【SSH框架实现】Struts2【2】 传值 以及 validation 实现的全部内容,希望文章能够帮你解决【SSH框架实现】Struts2【2】 传值 以及 validation 实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复