valuelist组件的一些简单看法


valuelist可通过ValueListHandlerHelper来进行分页查询。
使用ValueListHandlerHelper时,必需要设置ValueListHandlerHandler处理器.

这里主要有ValueListHandler处理器和adapter适配器两个概念。

adapter主要有用来处理分页,需要继承ValueListAdapter类,并实现ValueList getValueList(String name, ValueListInfo info)方法.
值得注意的是如果我们用jdbc且继承了它的AbstractJdbcAdapter类,最好重写getValueList方法,因为它的实现方法效率极低。它是通过查询到一个结果集后再用游标来分页.
而且不是变量绑定方式。比如如下的/~name:and name = '[name]'~/ 如果name变量为 ipod' or '1=1 ,这时它执行的sql为 select id, name from td_product where 1=1 and name = 'clothes1' or '1=1'


处理器类主要处理adapter返回的valuelist对象,比如根据AdapterType进行相关操作?很奇怪,这种操作有意义吗?

<!-- 适配器 -->
<bean id="defConfig" class="com.yeepay.valuelist.MapAdapter" singleton="false" >
     <property name="dataSource"><ref bean="dataSource"/></property>
         <property name="defaultNumberPerPage"><value>3</value></property>
         <property name="defaultSortColumn"><value>id</value></property>
         <property name="defaultSortDirection"><value>desc</value></property>
    </bean>      
   
<!-- 处理器 -->
<bean id="valueListHandler" class="net.mlw.vlh.DefaultValueListHandlerImpl">
    <!-- 适配器 -->
    <property name="config.adapters">
        <map>
            <entry key="productQuery">
                <bean parent="defConfig">
                    <property name="sql">
                        <value>
                            <![CDATA[
                               
                                select id, name from td_product where 1=1
                               
                                /~name:and name = '[name]'~/
                           
                             ]]>   
                        </value>
                    </property>
                </bean>
            </entry>
        </map>
    </property>
</bean>

<!-- helper -->
<bean id="valueListHelper" class="net.mlw.vlh.web.mvc.ValueListHandlerHelper">
    <property name="valueListHandler">
        <ref bean="valueListHandler" />
    </property>
</bean>



页面使用:首先要使用vlh:root标签,因为下面的<vlh:row,vlh:column及vlh:paging标签才能使用。root相当于初始化准备了一些数据。其它标签都是依赖于父标签来获取这些数据。

//list表示从request里获取ValueList或List数据。url表示分页里的url应该以什么开头,?表示以?开头. includeParameters=表示分页url需要拼哪些请求参数.*表示所有request里的参数.
<vlh:root value="list"  url="?" includeParameters="*" >
       
    <table>
        <vlh:row bean="test" display="" >
            <vlh:column sum="id" property="id"  />
            <vlh:column   property="name"  />
        </vlh:row>
    </table>
        //分页信息,pages表示要显示几个分页标签,showSummary表示是否显示总数
        <vlh:paging pages="3" showSummary="true" >
         &nbsp;<c:out value="${page}"/>
        </vlh:paging>           
</vlh:root>


valuelist还有其它特性,比如排序等。总体来讲valuelist不是个好组件,除非是一个很小的网站,否则不建议使用。

当然我们可以自己扩展它的组件和接口来改善,不过它本身为我们做得太少,那样的话不是很必要在它的基础上做,完全可以抛开它。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值