struts2输入校验
2016-07-16 15:33
309 查看
一、输入校验的流程
1. 首先Struts2对客户端传来的数据进行类型转换
2. 类型转换完毕后再进行输入校验
3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)
遇到类型转换错误的时候,struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面:
例如应用场景:年龄中,我们输入abc 信息,则在类型转换中报异常:
Invalid field value for field "age".
这是struts2 内置的类型转换异常信息提示,但我们不用。
我们如何替换struts2内置的异常信息呢?
1、struts.xml 中配置
<constant name="" value=""></constant>
constant:表示常量,在struts2 框架内,要使用哪些常量
-- name:常量名
-- value:需要生成的全局资源文件名
<constant name="struts.custom.i18n.resources" value="message"></constant>
2、生成全局资源文件:src / message.properties
3、内容:
xwork.default.invalid.fieldvalue={0} error
{0} 哪个出错,就填充哪个属性名
super.addFieldError("uname",super.getText("login.uname"));
全局异常信息报告还有一个问题:
{0} 填充的是属性名,并非对话的“标签名”。
struts2 给我们局部异常报告配置文件解决方案:
与Action 同一目录
命名:同名Action.properties
内容:invalid.fieldvalue.age=年龄类型转换错误
<s:fielderror/>
示例一、用户名和密码不为空的验证
我们的Action 类,如继承com.opensymphony.xwork2.ActionSupport,有很多的功能都被内置了,我们可以直接使用。
内置重要功能函数:
validate()
addFieldError(String fieldName, String errorMessage)
struts.xml 配置跳转
<result name="input">/index.jsp</result>
在validate() 验证中,一但放入addFieldError() 的错误,将自动会被 input 执行调用。
示例二、基础数据验证
简单基础数据验证我们写在execute() 函数里
public String execute() {
if (false) {
this.addFieldError(“username", "用户名或密码错误!");
return “failer”;
}
}
<result name="failer">/login.jsp</result>
them主题
在表单提交中<s:form />,加入主题theme=simple,struts2不再自动给我们错误内容提示了,见下例:
<s:actionerror/>
<s:fielderror/>
<s:form action="/reg" method="post" theme="simple">
<s:textfield name="age" label="年龄"></s:textfield>
<s:submit/>
</s:form>
addActionError() 错误验证
void addActionError(String anErrorMessage)
标签没有内置 ActionError 的错误信息显示
<s:actionerror/>
多业务验证
struts1.x 版本,DispatchAction功能 (解耦和一个Action 中有多个业务逻辑的处理功能)
struts2 的此功能实现,struts.xml中 action 的配置中加 method 属性。
配置:method = “add”
Action.java:public String add() throws Exception {}
多个业务逻辑,就写明多个action 业务
当一个 ***action.java中有多个业务逻辑,那么它们的验证该如何写明呢?
validate()验证函数,是所有action 都必须调用。
不同的业务逻辑,有不同的验证函数:
add()
public void validateAdd() {}
execute() 函数,验证为validateExecute()
1. 首先Struts2对客户端传来的数据进行类型转换
2. 类型转换完毕后再进行输入校验
3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)
遇到类型转换错误的时候,struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面:
例如应用场景:年龄中,我们输入abc 信息,则在类型转换中报异常:
Invalid field value for field "age".
这是struts2 内置的类型转换异常信息提示,但我们不用。
我们如何替换struts2内置的异常信息呢?
1、struts.xml 中配置
<constant name="" value=""></constant>
constant:表示常量,在struts2 框架内,要使用哪些常量
-- name:常量名
-- value:需要生成的全局资源文件名
<constant name="struts.custom.i18n.resources" value="message"></constant>
2、生成全局资源文件:src / message.properties
3、内容:
xwork.default.invalid.fieldvalue={0} error
{0} 哪个出错,就填充哪个属性名
super.addFieldError("uname",super.getText("login.uname"));
全局异常信息报告还有一个问题:
{0} 填充的是属性名,并非对话的“标签名”。
struts2 给我们局部异常报告配置文件解决方案:
与Action 同一目录
命名:同名Action.properties
内容:invalid.fieldvalue.age=年龄类型转换错误
<s:fielderror/>
示例一、用户名和密码不为空的验证
我们的Action 类,如继承com.opensymphony.xwork2.ActionSupport,有很多的功能都被内置了,我们可以直接使用。
内置重要功能函数:
validate()
addFieldError(String fieldName, String errorMessage)
struts.xml 配置跳转
<result name="input">/index.jsp</result>
在validate() 验证中,一但放入addFieldError() 的错误,将自动会被 input 执行调用。
示例二、基础数据验证
简单基础数据验证我们写在execute() 函数里
public String execute() {
if (false) {
this.addFieldError(“username", "用户名或密码错误!");
return “failer”;
}
}
<result name="failer">/login.jsp</result>
them主题
在表单提交中<s:form />,加入主题theme=simple,struts2不再自动给我们错误内容提示了,见下例:
<s:actionerror/>
<s:fielderror/>
<s:form action="/reg" method="post" theme="simple">
<s:textfield name="age" label="年龄"></s:textfield>
<s:submit/>
</s:form>
addActionError() 错误验证
void addActionError(String anErrorMessage)
标签没有内置 ActionError 的错误信息显示
<s:actionerror/>
多业务验证
struts1.x 版本,DispatchAction功能 (解耦和一个Action 中有多个业务逻辑的处理功能)
struts2 的此功能实现,struts.xml中 action 的配置中加 method 属性。
配置:method = “add”
Action.java:public String add() throws Exception {}
多个业务逻辑,就写明多个action 业务
当一个 ***action.java中有多个业务逻辑,那么它们的验证该如何写明呢?
validate()验证函数,是所有action 都必须调用。
不同的业务逻辑,有不同的验证函数:
add()
public void validateAdd() {}
execute() 函数,验证为validateExecute()
相关文章推荐
- Struts - 标签库
- struts1.0于struts2.0的比较
- Struts2中关于namespace的学习心得
- Struts2----自定义action的学习心得
- HTTP Status 404 - There is no Action mapped for namespace [/] and action name [login!welcome] associ
- struts2
- SSH学习笔记---struts2 spring集成时action的class的值
- ssh--问题记录
- 文章标题 使用ajaxFileupload+struts2完成文件的上传以及回显到jsp的链接地址
- struts 学习笔记
- Struts2 的基本配置
- struts2框架架构流程
- struts2.0拦截器(实现未登录的用户不能访问系统的页面)(转)
- Struts2 面试题分析
- Struts2+jQuery+JSON实现异步交互
- 软件开发疑惑解答
- ajax ssh 整合
- 关于struts2框架学习
- struts2 @Action给方法注解
- struts2学习笔记