最近在搭建一个最新的ssh2框架,今天在调试的时候,发现了一个以前一直没有注意过的问题,我在Action中使用域模型的方式去接收jsp画面中的参数的时候,发现参数总是接收不完,头一次遇到这种问题,现在把解决办法写下来

Jsp中的代码如下:

 <form action="TestAction" method="post">
用户名:<input type="text" name="user.userName"><br/>
密 码:<input type="text" name="user.userPwd"><br/>
<input type="submit" value="提交">
</form>

然后我在Action中定义一个user属性,user中包含了userName和userPwd属性,代码如下:

 /**
* 定义UserInfo的域模型,用于接收Form表单中的参数
*/
private UserInfo user;
public void setUser(UserInfo user) {
this.user = user;
}

因为我在Action只写了setUser方法,没有写相应的getUser方法,所以在接收参数的时候就出现了如下问题

在调试过程中发现,user域模型只接收到了一个参数,userName的却为空了

使用了Struts2框架那么久了,还是头一次遇到这个问题,百思不得其解。后来上网查了原因发现,原来是少了对应的getUser方法才导致出现了这个问题,因为struts2对这种混合类型的注入不是一次性全部注入其属性,而是每注入一次下一次就在前台获取obj然后再注入。我们编程时习惯getter/setter 都写,因此很少碰到这个问题。

在Action中加上对应的getUser方法,代码如下:

 private UserInfo user;
public UserInfo getUser() {
3 return user;
4 }
public void setUser(UserInfo user) {
this.user = user;
}

再次进行接收参数测试

这次就可以把JSP中填写的用户名和密码都获取下来了,如下图所示:

总结:在Struts2中使用domain模型接收参数时,一定要写上该模型对应的get和set方法,否则就会出现参数接收不完的情况。

在Action中使用域模型接收参数的正确写法范例:

 /**
* 定义UserInfo的域模型,用于接收Form表单中的参数
*/
private UserInfo user;
/**
* 对应的get方法
*/
public UserInfo getUser() {
return user;
}
/**
* 对应的set方法
*/
public void setUser(UserInfo user) {
this.user = user;
}

关于在Struts2的Action中使用domain模型接收参数的问题的更多相关文章

  1. 在struts2的action中操作域对象(request、session)

    在struts2的Action中,操作域对象一共有三种方式: 1.ActionContext(与servelt API无关联): //相当于request ActionContext.getConte ...

  2. JavaWeb_(Struts2框架)Action中struts-default下result的各种转发类型

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...

  3. 9.Struts2在Action中获取request-session-application对象

    为避免与Servlet API耦合在一起,方便Action类做单元测试. Struts2对HttpServletRequest.HttpSession.ServletContext进行了封装,构造了三 ...

  4. struts2的action中获得request response session 对象

    在struts2中有两种方式可以得到这些对象 1.非IoC方式 要获得上述对象,关键Struts 2中com.opensymphony.xwork2.ActionContext类.我们可以通过它的静态 ...

  5. struts2对action中的方法进行输入校验---xml配置方式(3)

    上面两篇文章已经介绍了通过编码java代码的方式实现action方法校验,这里我们介绍第二种方式:xml配置文件 首先我们来看一个样例: ValidateAction.java: package co ...

  6. struts2对action中的方法进行输入校验(2)

    struts2输入校验流程: 1.类型转换器对请求參数运行类型转换,并把转换后的值赋给aciton中的属性 2.假设在运行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext, ...

  7. 理解Struts2的Action中的setter方法是怎么工作的

    接触过webwork和Struts2的同行都应该知道, 提交表单的时候,只要Action中的属性有setter 方法,这些表单数据就可以正确赋值到Action中属性里:另外对于Spring配置文件中声 ...

  8. 在Struts2的Action中获得request response session几种方法

    转载自~ 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式.分别为se ...

  9. struts2的action中@Autowired注入为null的解决方案

    今天遇到类似问题,记录下来以便以后查阅: @Aspect作用于action,致使action中的@Autowired注入为null的解决方案,以下三种任选一种: 1.去掉@Autowired,改用se ...

随机推荐

  1. Dream_Spark版本定制第一课

    从今天起,我们踏上了新的Spark学习旅途.我们的目标是要像Spark官方机构那样有能力去定制Spark. 一.  我们最开始将从Spark Streaming入手. 为何从Spark Streami ...

  2. linux网络配置原理

    一.网络连接的基本原理 http://www.cnblogs.com/dyllove98/archive/2013/08/06/3241294.html

  3. 云计算--MPI

    [root@localhost mpi]# mpicc -c base.c[root@localhost mpi]# mpicc -o base base.o[root@localhost mpi]# ...

  4. 底板芯片组与内存映射(Motherboard Chipsets and the Memory Map) 【转】

    转自:http://blog.chinaunix.net/uid-25909619-id-4194650.html 底板芯片组与内存映射 我打算写一些关于计算机内部构造(computer intern ...

  5. 首发:极简的Centos主机监控方法,分分钟即可使用【转】

    需求天天有,今年事更多.硬盘测试刚刚完成,就又来了性能监控的需求.一般我们生产就用zabbix了,用起来还行,就是蛮多脚本要写.开发和测试都是分散的,经常还要重装系统,用zabbix就算了,开发和测试 ...

  6. django和flask关于oralce数据库配置

    Django中关于Oracle数据库配置 # 使用SERVICE_NAME DATABASES = { 'default': { 'ENGINE': 'django.db.backends.oracl ...

  7. (原创)关于viewpager嵌套listview居中显示的问题

    今天折腾了半天自定义控件的问题,如下图所示,我们UI设计了一种可以左右滑动的列表,而列表中又包含了listview.而且要居中显示listview 我一看UI,心想简单,不就是根据datas的数目进行 ...

  8. linux进程的一些日常处理

    linux 下查看一个进程运行路径的方法 在linux下查看进程大家都会想到用 ps -ef|grep XXX 可是看到的不是全路径,怎么看全路径呢? 每个进程启动之后在 /proc下面有一个于pid ...

  9. 如何让Ubuntu 12.04 LTS更炫更具吸引力

    Ubuntu 12.04 LTS震撼发布   适逢七周岁生日之际,Ubuntu正式推出了第四个LTS长期支持版本,开发代号Precise Pangolin的Ubuntu 12.04在2012年4月26 ...

  10. Grafana 短信报警

    一.分析 需求 Grafana支持短信渠道报警 要求 使用开发提供的短信API接口 请求url: http://192.168.1.1:8088/alerting/sendSms?mobile=手机号 ...