Struts ActionForm的優化寫法

要點:
  在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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章