JadePool应用范例:实现中国行政区划管理

本文介绍了如何使用JadePool进行中国行政区划的管理,包括在JSF页面中创建消息提示组件,创建AddressBean管理行政区划数据,以及实现分页查询和记录修改功能。通过示例代码展示了JadePool提供的便捷性,如直接将查询结果转换为数据模型用于UI组件,简化了数据库操作。
摘要由CSDN通过智能技术生成
        这里使用JSF2.0技术实现中国行政区划管理,通过范例可以看到JadePool实现了与JSF框架和Primefaces的完美组合。本范例完整演示了以下操作:1、导入中国大陆行政区划记录,并将记录保存到数据库中;2、实现多功能的分页查询;3、在DataTable行中修改行政区划记录。数据来源于国家统计局于2012年11月份公布的中国大陆行政区划。这些数据被打包在jadepool-1.0-GBK.jar文件中,可以通过cn.jadepool.util.China的division()方法导出。

一、修改模板文件
        1、将模板文件IndexTemplate.xhtml中的<p:menuitem value="行政区划" url="#" />修改为:<p:menuitem value="中国行政区划" outcome="cn_address" />,outcome指向本系统内的一个JSF页面文件,不需要文件的后缀名。
        2、增加一个导航到首页的菜单项<p:menuitem value="返回首页" outcome="index" icon="ui-icon-home"/>,icon用来在菜单项前增加一个图标。

        3、在底部布局中,增加一个消息提示组件<p:growl/>,需要在<h:form/>中添加。代码如下:

<p:layoutUnit position="south" size="40" closable="true" collapsible="true">
     <h:form id="bottomForm" style="padding: 4px;text-align:center;">
         ...
         <p:growl id="bottomGrowl" showDetail="true" />
    </h:form>
</p:layoutUnit>

        修改后的模板文件见附件1。


二、创建AddressBean受管Bean

        AddressBean受管Bean源代码见附件2。

        AddressBean用来提供行政区划的数据,实现应用程序逻辑和业务逻辑。除了set、get方法外,其它的属性、方法均作了详细的注释。由于使用JadePool作为持久化工具,实现数据更新、查询的操作都非常方便。



三、创建中国行政区划管理页面

        创建模板客户端网页文件cn_address.xhtml,源代码见附件3。

        创建后,将文件的字符集编码修改GBK。

        在cn_address.xhtml页面中实现了以下操作:

                1、导入中国行政区划记录,并将记录保存到数据库中;

                2、实现多功能的分页查询;

                3、在DataTable行中修改行政区划记录。

        导入的页面代码:

        <p:commandButton style="float: left;" value="初始化地名" action="#{addressBean.reUpdateDiming}" icon="ui-icon-disk" update="@form :bottomForm:bottomGrowl"/>

        导入实现的java代码:

    /**
     * 导入中国大陆的行政区划
     *
     * @return null 导航到指定的页面,null值代表返回当前的页面
     */
    public String reUpdateDiming() {
        Jade j = new Jade();
        List<Map> v = cn.division();
        for (Map m : v) {
            j.save("cn_address", m);//这是为了保护已经修改的成果
        }
        dimingList = j.query("select * from cn_address");
        dimingModel = new ListMapDataModel(dimingList, "addresscode");
        j.commit();
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("导入地名", "导入地名记录" + dimingList.size() + "条!"));
        return null;
    }

        分页查询的页面代码:

 

<p:dataTable id="addressDataTable"
                                 value="#{addressBean.dimingModel}"  
                                 var="m"
                                 rowIndexVar="i"
                                 paginator="true"
                                 paginatorPosition="bottom"
                                 rows="10"  
                                 paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                                 rowsPerPageTemplate="10,15,20,25,30,35,40,45,50,55,60"
                                 selection="#{addressBean.dimingSelected}"
                                 selectionMode="single"
                                 editable="true"
                                 >
                            ......
 
        在分页中调用的查询数据,如:

        <p:column headerText="标准名称" style="width:15%;" sortBy="#{m.addressname}" >
            #{m.addressname} 
        </p:column>  



        需要指出的是ListMapDataModel dimingModel数据模型是直接将JadePool查询结果转换而来的,而且可以直接在JSF的UI组件中调用,如:<p:inputText value="#{m.longitude}" />。将其修改后又能直接保存到数据库中,因此,极大地方便了JadePool用户。代码如:onEdit方法中保存修改的代码

        Record r = new Record();
        Map dm = r.one(this.dimingList, "addresscode", m.get("addresscode"));
        Jade j = new Jade();
        j.save("cn_address", dm);
        //......


修改记录时的页面效果见图





附件1:IndexTemplate.xhtml

<?xml version='1.0' encoding='GBK' ?>
<!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:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
        <title>China软件项目</title>
        <h:outputStylesheet library="css" name="primefaces.css"/>
        <st
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值