您的位置:首页 > 编程语言 > Java开发

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2.0