有朋友問到使用ejb3時(shí)關(guān)于jsf實(shí)現(xiàn)多行選擇編輯記錄的問題。其實(shí)按照jsf編程模型也只不過按部就班而已,沒有什么好多說的。還是看實(shí)例好了。
一,創(chuàng)建表格,插入兩條記錄備用.
create table "spring"."dbo"."product"(
"productid" int not null,
"category" varchar(10) not null,
"name" varchar(80) null,
"descn" varchar(255) null,
constraint "PK__product__05D8E0BE" primary key ("productid")
)
insert into product (1,’圖書’,’計(jì)算機(jī)應(yīng)用’, ‘計(jì)算機(jī)工業(yè)出版社’)
insert into product (2,’圖書’,’計(jì)算機(jī)組成原理’, ‘計(jì)算機(jī)工業(yè)出版社’)
二,ejb3的實(shí)現(xiàn)
1, 創(chuàng)建一個(gè)實(shí)體Product 沒什么好多說的,只是多增加了一個(gè)boolean屬性 editor,并且加了@Transient注釋用以說明該屬性不是持久化字段,增加該字段的目的也僅僅是為了判斷哪些記錄被選中了,以便處理選中了記錄.
2, 創(chuàng)建會(huì)話bean
接口
package ejb;
import java.util.List;
public interface ProductDao {
public List getProducts() throws Exception;
public void saveProducts(List<entity.Product> products) throws Exception;
package ejb;
Bean類
import javax.ejb.*;
import java.util.List;
import java.util.Iterator;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import entity.Product;
@Stateful
@Remote(ProductDao.class)
public class ProductDaoBean {
@PersistenceContext
protected EntityManager em;
public List getProducts()throws Exception{
Query query = em.createQuery("from Product");
List list = query.getResultList();
em.clear();
return list;
}
public void saveProducts(List<Product> products){
for(Iterator<Product> it = products.iterator();it.hasNext();){
Product p = it.next();
em.merge(p);
}
}
}
3, jsf頁面跟backing bean 前面兩篇blog也說過這方面的類容,沒什么好說的,也就不好了。
需要說明的是本例服務(wù)器采用jboss5.0,數(shù)據(jù)庫用的MS SQL2000.完整實(shí)例下載。