以下是本人做的demo
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:richfaces="http://richfaces.ajax4jsf.org/rich"
xmlns:c="http://java.sun.com/jstl/core">
<body>
<ui:composition template="/template/template.xhtml">
<ui:param name="path" value="#{facesContext.externalContext.requestContextPath}"/>
<ui:define name="title">Type</ui:define>
<ui:define name="body">
<script type="text/javascript">
// <![CDATA[
// ]]>
</script>
<a4j:form id="fm1" name="fmn1">
<h:panelGrid columns="2" style="width:100%;">
<rich:panel header="" id="left" style="width:200;height:440;">
<h:panelGrid columns="1">
<h:outputText id="txtId" value="#{typePage.type.id}"/>
<h:outputText id="txtName" value="#{typePage.type.name}"/>
<!-- <a4j:commandLink oncomplete="Richfaces.showModalPanel('mp');" reRender="pnl2" actionListener="#{typePage.detailSetup}" value="commit"/>-->
</h:panelGrid>
</rich:panel>
<rich:panel header="right title" style="width:540;height:440;" id="right">
<h:outputText id="optChoose" value=""/>
<h:inputHidden id="hid2" value="#{typePage.selectedItem}"/>
<input type="checkbox" value="" id="chk2" title="java" onclick="checkAll('chk2','mycheckbox')" />
<a4j:commandLink value="btNtest" reRender="chk" onclick="linkAll('chk2','mycheckbox');"/>
<h:outputText id="txtId2" value="#{typePage.type.name}"/>
<rich:dataTable id="types" rowKeyVar="rkv" onRowClick="rowClick(this)" sortMode="single" columnsWidth="30" binding="#{typePage.dataTable}" onRowMouseOver="rowOver(this)" footerClass="dr-table-header rich-table-header " onRowMouseOut="rowOut(this)" style="width:95%;" value="#{typePage.types}" var="item">
<a4j:support event="onRowDblClick" reRender="pnl2" oncomplete="Richfaces.showModalPanel('mp');" actionListener="#{typePage.editSetup}"/>
<f:facet name="header">
<h:outputText value="I love java"/>
</f:facet>
<rich:column id="read">
<f:facet name="header">
<h:outputText styleClass="headerText"
value="read" />
</f:facet>
<span onclick="alert('aaa')">
<input type="checkbox" id="chkId_#{rkv}" onclick="ck2(this)" name="mycheckbox" value="#{item.id}"/>
</span>
</rich:column>
<rich:column sortable="true" sortBy="#{item.id}" selfSorted="true" headerClass="dr-table-header rich-table-header ">
<f:facet name="header">
<h:outputText value="id"/>
</f:facet>
<h:outputText id="tblId" value="#{item.id}"/>
</rich:column>
<rich:column sortBy="#{item.name}" headerClass="dr-table-header rich-table-header " id="colName">
<f:facet name="header">
<h:outputText id="tblName" value="name"/>
</f:facet>
<h:outputText value="#{item.name}"/>
</rich:column>
<rich:column sortBy="#{item.describ}">
<f:facet name="header">
<h:outputText value="describ"/>
</f:facet>
<h:outputText value="#{item.describ}"/>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="audit"/>
</f:facet>
<h:outputText id="tblAudit" value="#{item.audit}"/>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="btn"/>
</f:facet>
<a4j:commandButton value="ee"/>
</rich:column>
<f:facet name="footer">
</f:facet>
</rich:dataTable>
<a4j:commandButton value="添加" id="btnAdd" reRender="pnl2" oncomplete="Richfaces.showModalPanel('mp');" actionListener="#{typePage.createSetup}"/>
<a4j:commandButton value="删除" reRender="optChoose,types" onclick="c('fm1','mycheckbox')" actionListener="#{typePage.del}"/>
</rich:panel>
</h:panelGrid>
</a4j:form>
<table>
<c:forEach items="#{typePage.types}" var="item">
<tr><td onclick="A4J.AJAX.Submit('_viewRoot','fm1',event,{'oncomplete':alert('javaee'),'parameters':{'fm1:btnAdd':'fm1:btnAdd'} ,'actionUrl':'/jsf1.2-demo/jsfcn/type.jsf'} )">#{item.name}</td></tr>
</c:forEach>
</table>
<!-- ******************* pop panel -->
<rich:modalPanel id="mp" moveable="true" width="580" height="400" resizeable="false">
<f:facet name="header">
<h:outputText value="Type Title" />
</f:facet>
<f:facet name="controls">
<a href="javascript:Richfaces.hideModalPanel('mp')">close</a>
</f:facet>
<a4j:outputPanel id="pnl2">
<a4j:include id="icd" binding="#{typePage.include}" viewId="pop/tmp.xhtml"/>
</a4j:outputPanel>
</rich:modalPanel>
</ui:define>
</ui:composition>
</body>
</html>
/************************Back Bean ******************///
**********************************************
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.oak.jsfcn.view.bean.page;
import java.util.List;
import javax.faces.event.ActionEvent;
import org.oak.jsfcn.server.entity.Type;
import org.oak.jsfcn.server.session.admin.TypeRemote;
/**
*
* @author KennyLin
*/
public class TypePage extends Page {
private List types;
private Type type;
private String selectedItem = "init";
/**
* page
*
*/
public TypePage() {
System.out.println(this.getClass().getName() + " TypePage init ...");
}
@Override
public void init() {
TypeRemote typeRemote = serviceLocator.getTypeRemote();
types = typeRemote.findAll();
}
public void editSetup(ActionEvent e) {
System.out.println(this.getClass().getName() + " editSetup ...");
type = (Type) getDataTable().getRowData();
include.setViewId("pop/typeEdit.xhtml");
}
public void edit(ActionEvent e) {
System.out.println(this.getClass().getName() + " edit ...");
TypeRemote typeRemote = serviceLocator.getTypeRemote();
typeRemote.merge(type);
init();
}
public void createSetup(ActionEvent e) {
System.out.println(this.getClass().getName() + " createSetup ...");
type = new Type();
include.setViewId("pop/typeCreate.xhtml");
}
public void create(ActionEvent e) {
System.out.println(this.getClass().getName() + " create ...");
TypeRemote typeRemote = serviceLocator.getTypeRemote();
typeRemote.persist(type);
init();
}
public void delete(ActionEvent e) {
System.out.println(this.getClass().getName() + " delete ...");
TypeRemote typeRemote = serviceLocator.getTypeRemote();
typeRemote.remove(type.getId());
init();
}
public void del(ActionEvent e) {
System.out.println(this.getClass().getName() + " del ...");
String[] str = selectedItem.split("&");
for (int i = 0; i < str.length; i++) {
Long id = Long.valueOf(str[i]);
TypeRemote typeRemote = serviceLocator.getTypeRemote();
typeRemote.remove(id);
}
// TypeRemote typeRemote = serviceLocator.getTypeRemote();
// typeRemote.remove(type.getId());
init();
}
public List getTypes() {
return types;
}
public Type getType() {
if (type == null) {
type = new Type();
}
return type;
}
public void setType(Type type) {
this.type = type;
}
public String getSelectedItem() {
return selectedItem;
}
public void setSelectedItem(String selectedItem) {
this.selectedItem = selectedItem;
}
}
//*************************** Server ******************//
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.oak.jsfcn.server.session.admin.impl;
import org.oak.jsfcn.server.session.admin.*;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.oak.jsfcn.server.entity.Type;
import org.oak.util.GenKeyUtil;
/**
*
* @author KennyLin
*/
@Stateless
public class TypeBean implements TypeRemote {
@PersistenceContext
private EntityManager em;
public void persist(Type type) {
type.setId(GenKeyUtil.getId(em, "cn_type"));
em.persist(type);
}
public void merge(Type type) {
em.merge(type);
}
public void remove(Long id) {
Type type = em.find(Type.class, id);
em.remove(type);
}
public Type find(Long id) {
return em.find(Type.class, id);
}
public List find(String propertyName, Object val) {
List types = em.createQuery("SELECT c FROM Type c WHERE c." + propertyName + " = :propertyName").setParameter("propertyName", val).getResultList();
return types;
}
public List findAll() {
List types = em.createQuery("SELECT c FROM Type c").getResultList();
return types;
}
}
//********************************
分享到:
相关推荐
- **EJB 2.0**:要求显式定义部署描述符(Deployment Descriptors),如`ejb-jar.xml`,这些文件用于指定容器如何管理和部署EJB组件。 - **EJB 3.0**:减少了对部署描述符的依赖。EJB 3.0支持使用元数据驱动的方式...
### Java-J2EE 最新EJB 3.0实例教程知识点总结 #### 一、教程概览 **标题与描述**: - **标题**:“Java-J2EE 最新ejb3.0实例教程” - **描述**:“Java J2EE EJB 最新ejb3.0实例教程” - **标签**:“java j2ee ...
- `ejb-3_0-fr-spec-simplified.pdf`:这个版本可能提供了一个简化的EJB3.0规范概述,方便初学者快速理解EJB3.0的关键特性。 通过深入学习这些文档,开发者可以全面掌握EJB3.0规范,有效提升在Java企业级应用开发中...
《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与章节内容相关的实例,给出了开发过程中运用到的技巧和注意事项,相信读者一定能从中获益。
### Java之精通EJB3.0 #### 一、EJB3.0简介与改进 企业Java Beans(Enterprise JavaBeans,简称EJB)是Java平台为企业级应用开发提供的一种组件模型。EJB3.0是EJB规范的一个重大版本更新,它在EJB2.0的基础上进行...
EJB(Enterprise JavaBeans)3.0是Java EE(Enterprise Edition)平台中用于构建企业级应用的重要组件。在本文中,我们将深入探讨EJB3.0的容器模型以及其在Web服务中的应用。EJB3.0引入了大量简化开发的特性,使其...
**电子书-EJB3.0实例教程** EJB(Enterprise JavaBeans)是Java平台企业版(Java EE)的一部分,主要用于构建可复用的、模块化的、面向服务的企业级应用程序。EJB 3.0是其重要的一个版本,它在EJB 2.x的基础上进行...
在这个"Entity-EJB3.0.rar"压缩包中,我们很可能找到了关于EJB 3.0实体Bean(Entity Beans)的示例代码和相关文档。 EJB 3.0引入了以下几个关键特性: 1. **注解驱动**:在EJB 3.0中,开发者可以使用Java注解...
标签:agent-car-ejb-3.0-beta-1-sources.jar,agent,car,ejb,3.0,beta,1,sources,jar包下载,依赖包
EJB 3.0移除了传统的部署描述符(ejb-jar.xml),许多元数据可以直接在Bean类上通过注解来定义,使得部署过程更加简单。 10. **测试支持(Testing Support)**: EJB 3.0引入了单元测试和集成测试的支持,使得...
在这个"ejb3.0开发实例(java工程)"中,我们将深入探讨EJB 3.0的主要特性和开发实践。 1. **注解驱动**:EJB 3.0最大的变革之一就是大量使用注解(Annotation),减少了XML配置文件的使用。例如,@Stateless、@...
《精通EJB3.0》是一本深入探讨企业级JavaBeans(EJB)3.0技术的专业书籍,由Rima Patel、Sriganesh、Gerald Brose和Micah Silverman共同编写,由Wiley Publishing出版。该书为读者提供了全面且深入的EJB3.0知识体系...
EJB 3.0是EJB规范的一个重大改革,它极大地简化了EJB的开发过程,使得Java开发者能够更加容易地利用EJB的强大功能。本教程将深入讲解EJB 3.0的基础知识,帮助初学者快速入门。 首先,我们来看《EJB3.0开发Entity....
【EJB3.0与Spring比较】 EJB3.0和Spring是两种广泛使用的Java企业级应用程序开发框架,它们在很多方面有所不同,这些差异主要体现在以下几个关键点: 1. **厂商无关性(Vendor Independence)** - EJB3.0遵循开放...
EJB(Enterprise JavaBeans)...ejb-3_0-fr-spec-ejbcore.pdf、ejb-3_0-fr-spec-persistence.pdf和ejb-3_0-fr-spec-simplified.pdf这三份文档共同构成了EJB 3.0的完整知识体系,是深入理解EJB 3.0规范的重要参考资料。
压缩包中的文件如“ejb-3_0-fr-spec-persistence.pdf”、“ejb-3_0-fr-spec-simplified.pdf”和“ejb-3_0-fr-spec-ejbcore.pdf”可能是EJB 3.0官方规范的文档,分别详细阐述了持久化、简化的规范和核心EJB 3.0的内容...
**企业级JavaBeans(EJB)3.0详解** 企业级JavaBeans(Enterprise JavaBeans,简称EJB)是Java平台上用于构建分布式企业级应用的重要组件模型。EJB 3.0是EJB规范的一个重大革新,它极大地简化了EJB的开发过程,引入...