ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 软件工程 >> 关于Struts2中Action从表单取值并且存到Web元素中session

关于Struts2中Action从表单取值并且存到Web元素中session(1/7)

来源:网络整理     时间:2017-11-01     关键词:

本篇文章主要介绍了" 关于Struts2中Action从表单取值并且存到Web元素中session",主要涉及到方面的内容,对于软件工程感兴趣的同学可以参考一下: 声明:本博客非原创,【转载:http://blog.csdn.net/Cece_2012/article/details/7617775】在struts2中,A...

声明:本博客非原创,【转载:http://blog.csdn.net/Cece_2012/article/details/7617775】

在struts2中,Action不同于struts1.x中的Action。在struts2中Action并不需要继承任何控制器类型或实现相应接口。比如struts1.x中的Action需要继承Action或者DispatcherAction。

同时struts2中的Action并不需要借助于像struts1.x中的ActionForm获取表单的数据。可以直接通过与表单元素相同名称的数据成员(需要存在符合命名规范的set和get方法)获取页面表单数据。

虽然struts2中的Action原则上不用继承任何类型。但是一般需要实现com.opensymphony.xwork2.Action接口或者继承com.opensymphony.xwork2.ActionSupport类型,然后重写execute方法。通常更愿意去继承ActionSupport类型,这样我们可以在我们的控制器中增加更多的功能。因为ActionSupport本身不但实现了Action接口,而且实现了其他的几个接口,让我们的控制器的功能更加强大,例如:

com.opensymphony.xwork2.Validateable:提供了validate方法,可以对action中的数据进行校验

com.opensymphony.xwork2.ValidationAware:提供了addFieldError方法,可以存取action级别或者字段级别的错误消息

com.opensymphony.xwork2.TextProvider:提供了获取本地化信息文本的方法getText

com.opensymphony.xwork2.LocaleProvider:提供了getLocale方法,用于获取本地信息

从以上我们可以看到,继承ActionSupport,可以完成更多的工作。

例如上面的例子,例如我们需要判断输入文本框的内容,输入的内容长度必须在6-10之间。那么我们可以增加校验工作,利用validate方法。更改后的代码如下:

 关于Struts2中Action从表单取值并且存到Web元素中session 关于Struts2中Action从表单取值并且存到Web元素中session

 1package com.frank.action;
 2 3import com.opensymphony.xwork2.ActionSupport;
 4publicclass HelloWorldAction extends ActionSupport {
 5private String message;
 6private String username;
 7    @Override
 8public String execute() throws Exception {
 9this.message="Hello World:"+this.username;
10return SUCCESS;
11    }
12public String getUsername() {
13return username;
14    }
15publicvoid setUsername(String username) {
16this.username = username;
17    }
18public String getMessage() {
19return message;
20    }
21publicvoid setMessage(String message) {
22this.message = message;
23    }
24    @Override
25publicvoid validate() {
26if(this.username.trim().length()<6||this.username.trim().length()>10){
27             addFieldError("user.username","the length is invalid");
28        }
29    }
30 }
View Code

由于实现了validate方法,这样当请求一个控制器(在这里为helloWorld.action)的时候,首先执行validate方法,如果有错误信息增加到action中,那么就不继续执行Action,返回INPUT,否则就继续执行Action。在本例中,首先判断用户名称是否在合法的长度范围,如果不在增加错误信息,返回INPUT(默认返回)。

因为有错误返回INPUT,所以此Action在配置文件中应该定义INPUT转发路径

相关图片

相关文章