要点:

  在ActionForm定义值对象company,定义Setter/Getter方法;
  在JSP里对input元素的名称稍加变化,加company前缀,company.cp_name。
  Struts能把company.cp_name的值自动地Populate到对象company,填充cp_name属性。

效果:

  简化ActionForm对属性的定义,实际上系统只需要保留ValueObject和PersistObject两类对象。
  本质上是借用值对象ValueObject作为ActionForm的传值对象。
 
变化:
  当页面元素来自不同类值对象时,例如Company,Bulletin等,分别写不同的前缀,company.cp_name,bulletin.bl_title。
  对于不属于任何值对象的元素,照基本写法写。

===

示例代码

** 传统写法:

//CompanyForm.java

package
 com.ticket.company.actionform;
import
 javax.servlet.http.
*
;
import
 org.apache.struts.action.
*
;
import
 com.ticket.entity.company.
*
;
public
 
class
 CompanyForm
    
extends
 ActionForm 
...
{
    
private String cp_name;            //名称
    private String cp_phone;           //电话
    private String cp_fax;             //传真
    
public String getCp_name() ...{
        
return cp_name;
    }
    
public void setCp_name(String cp_name) ...{
        
this.cp_name = cp_name;
    }
    
public String getCp_phone() ...{
        
return cp_phone;
    }
    
public void setCp_phone(String cp_phone) ...{
        
this.cp_phone = cp_phone;
    }
    
public String getCp_fax() ...{
        
return cp_fax;
    }
    
public void setCp_fax(String cp_fax) ...{
        
this.cp_fax = cp_fax;
    }
    
//其他代码
}

** 优化写法:

//CompanyForm.java

package
 com.ticket.company.actionform;
import
 javax.servlet.http.
*
;
import
 org.apache.struts.action.
*
;
import
 com.ticket.entity.company.
*
;
public
 
class
 CompanyForm
    
extends
 ActionForm 
...
{
    
public Company company = new Company();
    
public Company getCompany() ...{
        
return company;
    }
    
public void setCompany(Company company) ...{
        
this.company = company;
    }
    
//其他代码
}

//company_add.jsp

要点:

  在ActionForm定义值对象company,定义Setter/Getter方法;
  在JSP里对input元素的名称稍加变化,加company前缀,company.cp_name。
  Struts能把company.cp_name的值自动地Populate到对象company,填充cp_name属性。

效果:

  简化ActionForm对属性的定义,实际上系统只需要保留ValueObject和PersistObject两类对象。
  本质上是借用值对象ValueObject作为ActionForm的传值对象。
 
变化:
  当页面元素来自不同类值对象时,例如Company,Bulletin等,分别写不同的前缀,company.cp_name,bulletin.bl_title。
  对于不属于任何值对象的元素,照基本写法写。

===

示例代码

** 传统写法:

//CompanyForm.java

package
 com.ticket.company.actionform;
import
 javax.servlet.http.
*
;
import
 org.apache.struts.action.
*
;
import
 com.ticket.entity.company.
*
;
public
 
class
 CompanyForm
    
extends
 ActionForm 
...
{
    
private
 String cp_name;            
//
名称
    
private
 String cp_phone;           
//
电话
    
private
 String cp_fax;             
//
传真
    
public
 String getCp_name() 
...
{
        
return
 cp_name;
    }
    
public
 
void
 setCp_name(String cp_name) 
...
{
        
this
.cp_name 
=
 cp_name;
    }
    
public
 String getCp_phone() 
...
{
        
return
 cp_phone;
    }
    
public
 
void
 setCp_phone(String cp_phone) 
...
{
        
this
.cp_phone 
=
 cp_phone;
    }
    
public
 String getCp_fax() 
...
{
        
return
 cp_fax;
    }
    
public
 
void
 setCp_fax(String cp_fax) 
...
{
        
this
.cp_fax 
=
 cp_fax;
    }
    
//
其他代码
}

** 优化写法:

//CompanyForm.java

package
 com.ticket.company.actionform;
import
 javax.servlet.http.
*
;
import
 org.apache.struts.action.
*
;
import
 com.ticket.entity.company.
*
;
public
 
class
 CompanyForm
    
extends
 ActionForm 
...
{
    
public
 Company company 
=
 
new
 Company();
    
public
 Company getCompany() 
...
{
        
return
 company;
    }
    
public
 
void
 setCompany(Company company) 
...
{
        
this
.company 
=
 company;
    }
    
//
其他代码
}

//company_add.jsp

<
form 
action
="companyAdmin.do?action=addConfirm&forward=listAllLevel1"
 method
="post"
 name
="myForm"
 
>
 
    
<
tr
>
 
        
<
td 
height
="23"
 align
="right"
  class
="bg2"
>
单位名称: 
</
td
>
        
<
td 
width
="85%"
>
            
<
input 
name
="company.cp_name"
 type
="text"
 maxlength
="25"
 size
="50"
 height
="16"
>
            
<
font 
color
="#FF0000"
>
*
</
font
>
        
</
td
>
    
</
tr
>
    
<
tr
>
        
<
td 
height
="23"
 align
="right"
  class
="bg2"
>
电  话:
</
td
>
        
<
td 
width
="85%"
>
            
<
input 
name
="company.cp_phone"
 type
="text"
 maxlength
="20"
 size
="30"
 height
="16"
>
        
</
td
>
    
</
tr
>
    
<
tr
>
        
<
td 
height
="23"
 align
="right"
  class
="bg2"
>
传  真:
</
td
>
        
<
td 
width
="85%"
>
            
<
input 
name
="company.cp_fax"
 type
="text"
 maxlength
="20"
 size
="30"
 height
="16"
>
           
</
td
>
    
</
tr
>
</
form
>