Hibernate3.3.2+Spring2.5.5+Struts2.1.6+Extjs3.0.0_Annotations方式快速开发框架2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
// 读取 extjs 传来的分页和排序信息 public void setStart(int start) { this.start = start; } public void setLimit(int limit) { this.limit = limit; } public void setSort(String sort) { this.sort = sort; } public void setDir(String dir) { this.dir = dir; } // 读取 extjs 传来的选中记录 id public void setIds(String ids) { this.ids = ids; }
this.description = description; } }
增加 struts2 与 extjs 交互抽象类,完成分页、排序、增删改查。 package com.xy.action;
import java.util.HashSet; import java.util.List; import java.util.Set;
@Scope("prototype") @ParentPackage(value="json-default") @Results({ @Result(name="success", value="", type=JSONResult.class, params={ "ignoreHierarchy", "false"}) }) public abstract class Struts2ExtjsBaseAction<T extends BaseEntity, X exte nds BaseServiceForHibernate<T>> extends ActionSupport{ static Logger logger = Logger.getLogger(Struts2ExtjsBaseAction.class.g etName());
for(String s : ids.split(",")){ service.delete(Long.parseLong(s)); } success = true; return SUCCESS; }
// 对象 T 内部信息的读取均在子类中进行
// getter,setter 方法 // struts2 需 get 方法将数据转换成 json public List<T> getList() { return list; } public int getTotal() { return total; } public boolean isSuccess() { return success; } public String getMessage() { return message;
/** * struts2 与 extjs 交互抽象类 * 完成基本增删改查分页等功能,子类继承时只需设置 entity 中属性的 set。 * @author xy * @date 2009-12-31 * @param <T extends BaseEntity, X extends BaseHibernateDao<T>> ent ity 和 service */ @Controller
五、整合 Struts2、Extjs 将 struts-2.1.6\lib 目录下的 struts2-codebehind-plugin-2.1.6.jar、 struts2-core-2.1.6.jar、struts2-spring-plugin-2.1.6.jar、xwork-2.1.2.jar、 ognl-2.6.11.jar、freemarker-2.3.13.jar、commons-fileupload-1.2.1.jar、 commons-io-1.3.2.jar 复制到项目 WebContent\lib 下。 另外还需 jsonplugin-0.34.jar 包,使 struts2 action 返回 json 类型。
// Service 类 protected X service;
// 返回的数据列表和记录总数 protected List<T> list; protected int total;
// entity 对象,用于提交保存,更新前取个别数据 protected T entity;
// 记录选中记录的 id protected String ids;
/** * 取列表 */ public String list() { logger.debug("取数据列表!start:"+this.start+", limit:"+this.limit+",sort:"+this.sort+",dir:"+this.dir);
Set<Criterion> criterionSet = new HashSet<Criterion>(); Set<Order> orderSet = new HashSet<Order>(); if(this.dir.equals("ASC")){ orderSet.add(Order.asc(this.sort)); }else{ orderSet.add(Order.desc(this.sort)); } list = service.query(criterionSet, orderSet, this.start, this.limit); total = service.totalSize(criterionSet); success = true; return SUCCESS; } /** * 根据 ID 取数据 */ public String get() { logger.debug("根据 id 取数据明细!id:"+entity.getId());
import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.TableGenerator;
entity = service.get(entity.getId()); success = true; return SUCCESS; } /** * 保存 */ public String save() {
logger.debug("保存数据!entity:"+entity);
service.save(entity); success = true; return SUCCESS; } /** * 删除 */ public String delete() { logger.debug("根据 ids 删除数据!ids:"+ids);
import com.xy.entity.BaseEntity;
@Entity @Table(name="HSSEA_DEMO") public class Demo implements BaseEntity {
@Id @GeneratedValue(strategy=GenerationType.TABLE, generator="hssea_ demo") @TableGenerator(name = "hssea_demo", table="OBJECT_ID", pkColumnName="NAME", valueColumnName="VALUE", pkColumnValue="HSSEA_DEMO_PK", initialValue=1, allocationSize=1 ) @SequenceGenerator(name="hssea_demo_seq", sequenceName="seq _hssea_demo", allocationSize=1) private long id; @Column(name="CODE") private String code; @Column(name="DESCRIPTION") private String description; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getDescription() { return description; } public void setDescription(String description) {
import com.xy.action.Struts2ExtjsBaseAction; import com.xy.entity.demo.Demo;
import com.googlecode.jsonplugin.JSONResult; import com.opensymphony.xwork2.ActionSupport; import com.xy.service.BaseServiceForHibernate; import com.xy.entity.BaseEntity;
import org.apache.log4j.Logger; import org.apache.struts2.config.ParentPackage; import org.apache.struts2.config.Result; import org.apache.struts2.config.Results; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Order; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller;
private static final long serialVersionUID = 2863769505963567954L;
// Extjs 使用,成功与否,返回信息 protected boolean success = false; protected String message; // Extjs 使用,分页、排序信息 protected int start; protected int limit; protected String sort; protected String dir;
新建一个 entity 接口,action 层需使用该接口调用实体主键。 package com.xy.entity;
public interface BaseEntity { public long getId(); } 修改 Demo 实体,使其实现 BaseEntity 接口 package com.xy.entity.demo;
public T getEntity() { return entity; } }
新增 DemoAction 类 package com.xy.action.demo;
import 来自百度文库avax.annotation.Resource;
import org.apache.struts2.config.Namespace;