zoukankan      html  css  js  c++  java
  • Struts2类型转换(三)-类型转换与复杂属性的配合使用

    一、类型转换与复杂属性配合使用

    示例图示:form 标签的 name 属性可以被映射到一个属性的属性

    1)JSP页面主要代码如下:

    1 <s:form action="testComplextProperty">
    2     <s:textfield name="deptName" label="DeptName"></s:textfield>
    3     <!-- 映射属性的属性 -->
    4     <s:textfield name="mgr.name" label="MgrName"></s:textfield>
    5     <s:textfield name="mgr.birth" label="MgrBirth"></s:textfield>
    6     <s:submit></s:submit>
    7 </s:form>

    2)Java代码如下:

     1 //Manager类
     2 package com.atguigu.struts2.model;
     3 import java.util.Date;
     4 public class Manager {
     5     private String name;
     6     private Date birth;
     7     public String getName() {
     8         return name;
     9     }
    10     public void setName(String name) {
    11         this.name = name;
    12     }
    13     public Date getBirth() {
    14         return birth;
    15     }
    16     public void setBirth(Date birth) {
    17         this.birth = birth;
    18     }
    19     @Override
    20     public String toString() {
    21         return "Manager [name=" + name + ", birth=" + birth + "]";
    22     }
    23 }
    24 
    25 //Department类
    26 /**
    27  * 1. Department 是模型, 实际录入的 Department. deptName 可以直接写到
    28  * s:textfield 的 name 属性中. 那 mgr 属性如何处理呢 ?
    29  * 
    30  * struts2 表单标签的 name 值可以被赋为属性的属性: name=mgr.name, name=mgr.birth
    31  * 
    32  * 2. mgr 中有一个 Date 类型的 birth 属性, Struts2 可以完成自动的类型转换吗 ?
    33  * 
    34  * 全局的类型转换器可以正常工作!
    35  *
    36  */
    37 
    38 public class Department {
    39     private Integer id;
    40     private String deptName;
    41     private Manager mgr;
    42     public Integer getId() {
    43         return id;
    44     }
    45     public void setId(Integer id) {
    46         this.id = id;
    47     }
    48     public String getDeptName() {
    49         return deptName;
    50     }
    51     public void setDeptName(String deptName) {
    52         this.deptName = deptName;
    53     }
    54     public Manager getMgr() {
    55         return mgr;
    56     }
    57 
    58     public void setMgr(Manager mgr) {
    59         this.mgr = mgr;
    60     }
    61     @Override
    62     public String toString() {
    63         return "Department [id=" + id + ", deptName=" + deptName + ", mgr="
    64                 + mgr + "]";
    65     }
    66 }
    67 
    68 //Action代码,Action实现了ModelDriven接口
    69 package com.atguigu.struts2.app;
    70 import com.atguigu.struts2.model.Department;
    71 import com.opensymphony.xwork2.ActionSupport;
    72 import com.opensymphony.xwork2.ModelDriven;
    73 public class TestComplextPropertyAction extends ActionSupport 
    74     implements ModelDriven<Department>{
    75     @Override
    76     public String execute() throws Exception {
    77         System.out.println(department);
    78         return SUCCESS;
    79     }    
    80     private Department department;
    81     @Override
    82     public Department getModel() {
    83         department = new Department();
    84         return department;
    85     }    
    86 }

    3)struts.xml的基本配置如下:

    <action name="testComplextProperty" class="com.atguigu.struts2.app.TestComplextPropertyAction">
        <result>/success.jsp</result>
    </action>

    4)所使用的字符串与java.util.Date类型的转换器及配置同“Struts2类型转换(二)”。

    二、类型转换与 Collection 配合使用

    Struts 还允许填充 Collection 里的对象, 这常见于需要快速录入批量数据的场合

     示例图示:

    1)JSP页面主要代码如下:

     1 <head>
     2 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     3 <title>Insert title here</title>
     4 <script type="text/javascript" src="scripts/jquery-1.4.2.js"></script>
     5 <script type="text/javascript">
     6     $(function(){        
     7         var count = 0;        
     8         $("#add").click(function(){
     9             count++;            
    10             $("#button").before("<tr><td>Mgrs[" + count + "].Name:</td><td><input name='mgrs[" + count + "].name'/></td></tr>")
    11                         .before("<tr><td>Mgrs[" + count + "].Birth:</td><td><input name='mgrs[" + count + "].birth'/></td></tr>");            
    12             return false;        
    13         });        
    14         $("#remove").click(function(){
    15             count--;        
    16             $("#button").prev("tr").remove();
    17             $("#button").prev("tr").remove();            
    18             return false;        
    19         });        
    20     });    
    21 </script>
    22 </head>
    23 <body>    
    24     <form action="testConversion2.action">    
    25         <table>        
    26             <tbody>                
    27                 <tr>
    28                     <td>Mgrs[0].Name:</td>
    29                     <td><input name="mgrs[0].name"/></td>
    30                 </tr>                
    31                 <tr>
    32                     <td>Mgrs[0].Birth:</td>
    33                     <td><input name="mgrs[0].birth"/></td>
    34                 </tr>                
    35                 <tr id="button">
    36                     <td><button id="add">新加一个</button></td>
    37                     <td><button id="remove">删除一个</button></td>
    38                 </tr>                
    39                 <tr>
    40                     <td colspan="2" align="right">
    41                         <input type="submit" value="Submit"/>
    42                     </td>
    43                 </tr>            
    44             </tbody>            
    45         </table>        
    46     </form>    
    47 </body>

    JSP页面运行结果如下图,可以动态的添加或删除一组Mgrs表单。

    2)Java代码如下:

     1 package com.atguigu.struts2.app;
     2 import java.util.Collection;
     3 import com.atguigu.struts2.model.Manager;
     4 import com.opensymphony.xwork2.ActionSupport;
     5 public class TestCollectionAction extends ActionSupport {
     6     private Collection<Manager> mgrs = null;    
     7     public Collection<Manager> getMgrs() {
     8         return mgrs;
     9     }
    10     public void setMgrs(Collection<Manager> mgrs) {
    11         this.mgrs = mgrs;
    12     }
    13     public String execute() throws Exception {
    14         System.out.println(mgrs);
    15         return SUCCESS;
    16     }
    17 }

    3)struts.xml的基本配置如下:

    <action name="testConversion2" class="com.atguigu.struts2.app.TestCollectionAction">
        <result>/success.jsp</result>
    </action>

    4)所使用的字符串与java.util.Date类型的转换器及配置同“Struts2类型转换(二)”。

  • 相关阅读:
    python 用 matplotlib 的 basemap 绘制简单世界地图
    python 安装 basemap
    python 茎叶图
    python 用 matplotlib 绘制复合饼图(子母图)
    python 分析世界高收入数据集
    python 用 matplotlib 绘制 南丁格玫瑰图步骤详解
    python 用 matplotlib 中的 patch 模块绘制几何形状(圆,椭圆,圆弧,锲形块,矩形),组装一个机器人图
    python 用 matplotlib 的 patch 模块绘制矩形,画一所房子
    国家统计局数据下载
    python 用 matplotlib 的 patch 模块绘制椭圆详解
  • 原文地址:https://www.cnblogs.com/KnightKitt/p/3926750.html
Copyright © 2011-2022 走看看