`
laorer
  • 浏览: 438186 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts ActionForm的优化写法(转)

    博客分类:
  • j2EE
阅读更多

....

http://www.blogjava.net/liaojiyong/archive/2007/05/16/117833.html

......

要点:
  在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>

 


 

分享到:
评论

相关推荐

    SSH项目实例,有不同写法模板

    它通过Action和ActionForm来处理业务逻辑,利用配置文件定义请求到Action的映射,同时支持国际化和验证功能。Struts的视图层通常与JSP配合,通过Tiles框架进行页面布局。 Hibernate是一个对象关系映射(ORM)工具,...

    struts标签

    例如,正确的写法是`&lt;html:link href="'&lt;%= "/" + name + "/index.jsp" %&gt;'&gt;`。另外,`&lt;html:img&gt;`标签用于插入图片,需要指定`page`属性来定义图片路径,还可以通过`height`和`width`设置尺寸,`alt`属性提供替代...

    面试问题整理面试问题整理

    Struts 框架的工作流程、Struts2 与 Struts1 的区别、Hibernate 的优点和缺点、Spring 框架的工作机制、Ajax 的工作机制、Java 基础知识点、数据库知识点。 Struts 框架的工作流程 Struts 框架的工作流程可以分为...

    钦波最新项目系统分析\oa项目系统代码分析.docx

    `ActionForm`是Struts框架中的表单类,用于收集用户输入并传递给Action。在例子中,`parentId`的值通过`ActionForm`传递给`OrganizationAction`,然后根据这个值执行相应的操作,例如更新或查询。 综上所述,该OA...

    java面试题.doc

    Struts是MVC架构的一部分,它的配置文件Struts-config.xml定义了各个组件如何协同工作,包括Action、ActionForm、ActionMapping等。正确配置这些元素是构建基于Struts的应用程序的关键。 总的来说,Java面试题涵盖...

Global site tag (gtag.js) - Google Analytics