`
oak2008
  • 浏览: 78479 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

最新做的demo -- ejb3.0,a4j

阅读更多
以下是本人做的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;
    }
}

//********************************




分享到:
评论

相关推荐

    ejb2.0与ejb3.0的区别

    - **EJB 2.0**:要求显式定义部署描述符(Deployment Descriptors),如`ejb-jar.xml`,这些文件用于指定容器如何管理和部署EJB组件。 - **EJB 3.0**:减少了对部署描述符的依赖。EJB 3.0支持使用元数据驱动的方式...

    Java-J2EE 最新ejb3.0实例教程

    ### Java-J2EE 最新EJB 3.0实例教程知识点总结 #### 一、教程概览 **标题与描述**: - **标题**:“Java-J2EE 最新ejb3.0实例教程” - **描述**:“Java J2EE EJB 最新ejb3.0实例教程” - **标签**:“java j2ee ...

    EJB3.0规范-EJB3.0 SPECIFICATION

    - `ejb-3_0-fr-spec-simplified.pdf`:这个版本可能提供了一个简化的EJB3.0规范概述,方便初学者快速理解EJB3.0的关键特性。 通过深入学习这些文档,开发者可以全面掌握EJB3.0规范,有效提升在Java企业级应用开发中...

    EJB3.0入门经典(PDF)

    《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与章节内容相关的实例,给出了开发过程中运用到的技巧和注意事项,相信读者一定能从中获益。

    Java之精通EJB3.0.pdf

    ### Java之精通EJB3.0 #### 一、EJB3.0简介与改进 企业Java Beans(Enterprise JavaBeans,简称EJB)是Java平台为企业级应用开发提供的一种组件模型。EJB3.0是EJB规范的一个重大版本更新,它在EJB2.0的基础上进行...

    EJB3.0学习总结(二)--EJB3.0容器模型的WEB服务

    EJB(Enterprise JavaBeans)3.0是Java EE(Enterprise Edition)平台中用于构建企业级应用的重要组件。在本文中,我们将深入探讨EJB3.0的容器模型以及其在Web服务中的应用。EJB3.0引入了大量简化开发的特性,使其...

    电子书-EJB3.0实例教程

    **电子书-EJB3.0实例教程** EJB(Enterprise JavaBeans)是Java平台企业版(Java EE)的一部分,主要用于构建可复用的、模块化的、面向服务的企业级应用程序。EJB 3.0是其重要的一个版本,它在EJB 2.x的基础上进行...

    Entity-EJB3.0.rar_EJB3.0

    在这个"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,agent,car,ejb,3.0,beta,1,sources,jar包下载,依赖包

    ejb3.0开发规范PDF

    EJB 3.0移除了传统的部署描述符(ejb-jar.xml),许多元数据可以直接在Bean类上通过注解来定义,使得部署过程更加简单。 10. **测试支持(Testing Support)**: EJB 3.0引入了单元测试和集成测试的支持,使得...

    ejb3.0开发实例(java工程)

    在这个"ejb3.0开发实例(java工程)"中,我们将深入探讨EJB 3.0的主要特性和开发实践。 1. **注解驱动**:EJB 3.0最大的变革之一就是大量使用注解(Annotation),减少了XML配置文件的使用。例如,@Stateless、@...

    精通EJB3.0 pdf

    《精通EJB3.0》是一本深入探讨企业级JavaBeans(EJB)3.0技术的专业书籍,由Rima Patel、Sriganesh、Gerald Brose和Micah Silverman共同编写,由Wiley Publishing出版。该书为读者提供了全面且深入的EJB3.0知识体系...

    ejb3.0入门图文教程

    EJB 3.0是EJB规范的一个重大改革,它极大地简化了EJB的开发过程,使得Java开发者能够更加容易地利用EJB的强大功能。本教程将深入讲解EJB 3.0的基础知识,帮助初学者快速入门。 首先,我们来看《EJB3.0开发Entity....

    EJB3.0和Spring比较

    【EJB3.0与Spring比较】 EJB3.0和Spring是两种广泛使用的Java企业级应用程序开发框架,它们在很多方面有所不同,这些差异主要体现在以下几个关键点: 1. **厂商无关性(Vendor Independence)** - EJB3.0遵循开放...

    EJB 3.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规范的重要参考资料。

    EJB3.0API.rar_ejb_ejb3.0a_ejb3.0api

    压缩包中的文件如“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的内容...

    EJB 3.0实例教程.pdf

    **企业级JavaBeans(EJB)3.0详解** 企业级JavaBeans(Enterprise JavaBeans,简称EJB)是Java平台上用于构建分布式企业级应用的重要组件模型。EJB 3.0是EJB规范的一个重大革新,它极大地简化了EJB的开发过程,引入...

Global site tag (gtag.js) - Google Analytics