eterna第三个案例-解决查询和分页

1、准备查询语句吧

      <!-- query -->
            <query name="yyw.search.query">
                <prepared-sql>
                    select * from my_table
                    #sub[where $]
               </prepared-sql>
                <readers>
                    <reader name="id" type="String" caption="编号" />
                    <reader name="name" type="String" caption="姓名" />
                    <reader name="age" type="int" caption="年龄" />
                    <reader name="birth" type="Date" caption="生日" />
                    <reader name="memo" type="String" caption="备注" />
                </readers>
            </query>

2、新建搜索(包括搜索条件)

        <!-- search -->
            <search name="yyw.search" queryName="yyw.search.query" searchManager="123">
                <condition-propertys>
                    <condition-property name="age1" colName="age"
                        caption="年龄(大于)" colType="String" defaultBuilder="notBelow"></condition-property>
                    <condition-property name="age2" colName="age"
                        caption="年龄(小于)" colType="String" defaultBuilder="notLarge"></condition-property>
                    <condition-property name="name" caption="姓名"
                        colType="String"></condition-property>
                    <condition-property name="birth" colType="String"
                        inputType="text_date" caption="生日"></condition-property>
                </condition-propertys>
            </search>

3、配置业务

        <export name="yyw.search.export" path="/view.jsp" viewName="yyw.search.view" />
            <model name="yyw.search.model" modelExportName="yyw.search.export">
                <search-execute />
            </model>

4、配置view

        <view name="yyw.search.view">
                <!-- 这里使用了一个定义好的typical-component,里面已经定义了分页的控制条等。baseComponentName:使用的typical-component -->
                <replacement name="search_component" baseComponentName="search_component">
                    <before-init>
                        eg_temp.dataName = "queryResult";<!--eg_temp.dataName 指目前上下文环境中的数据对象的名称;queryResult指向查询结果 -->
                        {$dataV:eg_temp.dataName+'_modelName'} = "yyw.search.model";<!-- {$dataV:eg_temp.dataName+'_modelName'}:查询提交的model的名称。 -->
                        {$dataV:eg_temp.dataName+'_searchName'} = "yyw.search";   <!--{$dataV:eg_temp.dataName+'_searchName'}:查询使用的search的名称。 -->
                    </before-init>
                    <!-- 这个replacement是baseComponent下的节点,这是根据节点进行替换,这里的name不能换,否则系统将显示不了这个模块 -->
                    <replacement name="search">
                        <!-- table-form里的name也不能换 -->
                        <!-- baseName:基于的某个query、ReaderManager或search的名称,可通过这些对象的定义在自动生成表格。 -->
                        <table-form name="conditions" columns="20,30,20,30"
                            baseName="search:yyw.search" dataName="searchManager">
                            <cells cellOrder="title">
                                <!-- titleSize就是cell中name所占表格,containerSize就是下面的内容所占的表格数 -->
                                <cell name="title" titleSize="0" containerSize="4">
                                    <component-param>attr:{align:"left"}</component-param>
                                    <init-script>webObj.text("请输入查询条件");</init-script>
                                </cell>
                                <cell name="bottons" titleSize="0" containerSize="4">
                                    <component-param>attr:{align:"center"}</component-param>
                                    <component name="queryBtn" type="input-submit">
                                        <component-param>attr:{value:"查询"}</component-param>
                                    </component>
                                </cell>
                            </cells>
                        </table-form>
                    </replacement>
                    <replacement name="showList">
                        <!-- 这里的table-list的名字不能换名字,否则就显示不了 -->
                        <!-- baseName:基于的某个query或ReaderManager的名称,可通过这些对象的定义在自动生成表格 -->
                        <!-- dataName:数据对象的名称,对应eg_temp中的dataName属性。同样内容是queryResult不变 -->
                        <table-list name="list" baseName="query:yyw.search.query"
                            dataName="queryResult" >
                            </table-list>
                    </replacement>
                </replacement>
            </view>

5、下面研究下view

将其详细内容抽出如下:

 

       <view name="yyw.search.view">
                <replacement name="search_componentx" baseComponentName="search_component">
                    <before-init>
                    </before-init>
                    
                    <replacement name="search">                       
                        <table-form name="conditions" columns="20,30,20,30"
                            baseName="search:yyw.search" dataName="searchManager">
                            
                        </table-form>
                    </replacement>
                    <replacement name="showList">
                        <table-list name="list" baseName="query:yyw.search.query"
                            dataName="queryResult" >
                            </table-list>
                    </replacement>
                </replacement>
            </view>

 6、整体

<eterna-config>
    <factory>
        <objs>
            <!-- query -->
            <query name="yyw.search.query">
                <prepared-sql>
                    select * from my_table
                    #sub[where $]
               </prepared-sql>
                <readers>
                    <reader name="id" type="String" caption="编号" />
                    <reader name="name" type="String" caption="姓名" />
                    <reader name="age" type="int" caption="年龄" />
                    <reader name="birth" type="Date" caption="生日" />
                    <reader name="memo" type="String" caption="备注" />
                </readers>
            </query>
            
            <!-- search -->
            <search name="yyw.search" queryName="yyw.search.query" searchManager="123">
                <condition-propertys>
                    <condition-property name="age1" colName="age"
                        caption="年龄(大于)" colType="String" defaultBuilder="notBelow"></condition-property>
                    <condition-property name="age2" colName="age"
                        caption="年龄(小于)" colType="String" defaultBuilder="notLarge"></condition-property>
                    <condition-property name="name" caption="姓名"
                        colType="String"></condition-property>
                    <condition-property name="birth" colType="String"
                        inputType="text_date" caption="生日"></condition-property>
                </condition-propertys>
            </search>

            <export name="yyw.search.export" path="/view.jsp" viewName="yyw.search.view" />
            <model name="yyw.search.model" modelExportName="yyw.search.export">
                <search-execute />
            </model>
            <!-- 配置查询的视图 -->

            <view name="yyw.search.view">
                <!-- 这里使用了一个定义好的typical-component,里面已经定义了分页的控制条等。baseComponentName:使用的typical-component -->
                <replacement name="search_componentx" baseComponentName="search_component">
                    <before-init>
                        eg_temp.dataName = "queryResult";<!--eg_temp.dataName 指目前上下文环境中的数据对象的名称;queryResult指向查询结果 -->
                        {$dataV:eg_temp.dataName+'_modelName'} = "yyw.search.model";<!-- {$dataV:eg_temp.dataName+'_modelName'}:查询提交的model的名称。 -->
                        {$dataV:eg_temp.dataName+'_searchName'} = "yyw.search";   <!--{$dataV:eg_temp.dataName+'_searchName'}:查询使用的search的名称。 -->
                    </before-init>
                    <!-- 这个replacement是baseComponent下的节点,这是根据节点进行替换,这里的name不能换,否则系统将显示不了这个模块 -->
                    <replacement name="search">
                        <!-- table-form里的name也不能换 -->
                        <!-- baseName:基于的某个query、ReaderManager或search的名称,可通过这些对象的定义在自动生成表格。 -->
                        <table-form name="conditions" columns="20,30,20,30"
                            baseName="search:yyw.search" dataName="searchManager">
                            <cells cellOrder="title">
                                <!-- titleSize就是cell中name所占表格,containerSize就是下面的内容所占的表格数 -->
                                <cell name="title" titleSize="0" containerSize="4">
                                    <component-param>attr:{align:"left"}</component-param>
                                    <init-script>webObj.text("请输入查询条件");</init-script>
                                </cell>
                                <cell name="bottons" titleSize="0" containerSize="4">
                                    <component-param>attr:{align:"center"}</component-param>
                                    <component name="queryBtn" type="input-submit">
                                        <component-param>attr:{value:"查询"}</component-param>
                                    </component>
                                </cell>
                            </cells>
                        </table-form>
                    </replacement>
                    <replacement name="showList">
                        <!-- 这里的table-list的名字不能换名字,否则就显示不了 -->
                        <!-- baseName:基于的某个query或ReaderManager的名称,可通过这些对象的定义在自动生成表格 -->
                        <!-- dataName:数据对象的名称,对应eg_temp中的dataName属性。同样内容是queryResult不变 -->
                        <table-list name="list" baseName="query:yyw.search.query"
                            dataName="queryResult" >
                            </table-list>
                    </replacement>
                </replacement>
            </view>
        </objs>
    </factory>
</eterna-config>

 

posted @ 2013-01-17 19:03  Peter_youny  阅读(198)  评论(0编辑  收藏  举报