zoukankan      html  css  js  c++  java
  • 关于在Struts2的Action中使用domain模型接收参数的问题

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

    Jsp中的代码如下:

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

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

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

     

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

     

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

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

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

    1 private UserInfo user;
    2 public UserInfo getUser() {
    3     return user;
    4 }
    5 public void setUser(UserInfo user) {
    6     this.user = user;
    7 }

    再次进行接收参数测试

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

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

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

     1 /**
     2  * 定义UserInfo的域模型,用于接收Form表单中的参数
     3  */
     4 private UserInfo user;
     5 /**
     6  * 对应的get方法
     7  */
     8 public UserInfo getUser() {
     9     return user;
    10 }
    11 /**
    12  * 对应的set方法
    13  */
    14 public void setUser(UserInfo user) {
    15     this.user = user;
    16 }
  • 相关阅读:
    CSS3实战之新增的选择器
    前端攻城狮学习笔记八:自己实现string的substring方法,人民币小写转大写,数字反转,正则优化
    负值之美:负margin在页面布局中的应用
    关于vs2015无法启动iis服务
    ado.net中的 sqlconnection sqlcommand datareader dataset SqlDataAdapter之间的关系
    C# Lambda表达式详细总结
    Response.cookies和Request.cookies
    Quartz CronTrigger最完整配置说明 陀螺
    浅析如何去除Strings中的C#空格 陀螺
    C#Winform中WebBrowser控件的特性和详细调用方法 陀螺
  • 原文地址:https://www.cnblogs.com/xdp-gacl/p/3490201.html
Copyright © 2011-2022 走看看