valuelist在程序中修改sql语句

本文介绍了一个便于在Struts框架中操作ValueList的工具类ValueListUtil,该工具类简化了从数据库获取列表数据的过程,并展示了如何通过具体实例进行配置及使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在action中:

        String hsql = "FROM com.ruancu.model.MailTemplate AS vo " +
                      "/~name: WHERE vo.identifier LIKE {name} ~/" +
                      "/~sortColumn: ORDER BY vo.[sortColumn] [sortDirection]~/";
       
        ValueListUtil vlu = new ValueListUtil(getServlet().getServletContext());
        Map params = new HashMap();
        params.put("name","%");
        vlu.setHSql(hsql);
        vlu.handleValueList("mailTemplateList",params,request);

package com.ruancu.webapp.util;

/** @author Albert Song     修改by bzshow

 http://www.albertsong.com/blog/blogview.asp?logID=30&cateID=3
 */

 
import java.util.Map;
import java.util.HashMap;
 
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
 
import net.mlw.vlh.ValueList;
import net.mlw.vlh.ValueListHandler;
import net.mlw.vlh.ValueListAdapter;
import net.mlw.vlh.ValueListInfo;
import net.mlw.vlh.web.ValueListRequestUtil;
import net.mlw.vlh.adapter.hibernate.Hibernate3Adapter;
import net.mlw.vlh.DefaultValueListHandlerImpl;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
 
/**
 * 便于在struts中操作valuelist的工具类
 * USAGE:
 * 在从strtus action继承的类中
 *    ValueListUtil vlu = new ValueListUtil(getServlet().getServletContext());
 *    Map params = new HashMap();
 *  params.put("loginID","1");
 *  vlu.handleValueList("queryEntry",params,request)
 * @author Albert Song
 * @version 1.0
 */
public class ValueListUtil {
 
 /**
  * 从ActionServlet里取出来的ServletContext
  */
 private ServletContext sc=null;
 
 private String hSql = null;
 /**
  * 保存配置文件中的valuelist handler bean id
  */
 private String valueListHandlerName = "valueListHandler";
 /**
  * @param sc
  */
 public ValueListUtil(ServletContext sc)
 {
  this.sc=sc;
 }
 
 /**
 * @return Returns the hsql.
 */
public String getHSql() {
 return hSql;
}

/**
 * @param hsql The hsql to set.
 */
public void setHSql(String hSql) {
 this.hSql = hSql;
}

/**
  *
  * @param sc
  * @param vlh 配置文件中对应的ValueListHandler id
  */
 public ValueListUtil(ServletContext sc,String valueListHandlerName)
 {
  this.sc=sc;
  this.valueListHandlerName=valueListHandlerName;
 
 }
 
 /**
  * default getValueListHandler
  */
  public ValueListHandler getValueListHandler()
  {
    return getValueListHandler(valueListHandlerName);
 }
 
  /**
  * getValueListHandler
  */
  public ValueListHandler getValueListHandler(String handlerID)
  {
    WebApplicationContext context = WebApplicationContextUtils.
        getWebApplicationContext(sc);
    return (ValueListHandler) context.getBean(handlerID,
                                              ValueListHandler.class);
  }
 
  /**
   * @param request
   * @param valueListEntry valuelist 配置文件中的Entry
   */
  public  void handleValueList(String valueListEntry,HttpServletRequest request)
  {
   Map params = new HashMap();
   handleValueList(valueListEntry,params,request,"valueListInfo","list");
  }
 
  /**
   *
   * @param valueListEntry
   * @param params
   * @param request
   */
  public void handleValueList(String valueListEntry,Map params,HttpServletRequest request)
  {
   handleValueList(valueListEntry,params,request,"valueListInfo","list");
  }
  /**
   *
   * @param valueListEntry
   * @param request
   * @param valueListInfoName
   * @param valueListName
   */
  public void handleValueList(String valueListEntry,HttpServletRequest request,String valueListInfoName,String valueListName)
  {
   Map params = new HashMap();
   handleValueList(valueListEntry,params,request,valueListInfoName,valueListName);
  }
  /**
   *
   * @param valueListEntry 配置文件中sql的Entry
   * @param params 自定义参数值,可以通过params改变或增加参数
   * @param request 
   * @param valueListInfoName 设置到request中的valueListInfo的名字
   * @param valuListName     设置到request中的valueList的名字
   */
  public void handleValueList(String valueListEntry,Map params,HttpServletRequest request,String valueListInfoName,String valueListName)
  {
     handleValueList(valueListEntry,params,request,valueListInfoName,valueListName,"");
    }
 
 /**
   *
   * @param valueListEntry 配置文件中sql的Entry
   * @param params 自定义参数值,可以通过params改变或增加参数
   * @param request 
   * @param valueListInfoName 设置到request中的valueListInfo的名字
   * @param valuListName     设置到request中的valueList的名字
   * @param tableID    jsp中table的id
   */
  public void handleValueList(String valueListEntry,Map params,HttpServletRequest request,String valueListInfoName,String valueListName,String tableID)
  {
   Map parameters = ValueListRequestUtil.getRequestParameterMap(request,tableID);
   parameters.putAll(params);
  
   if (hSql != null)
   {
    DefaultValueListHandlerImpl handler = (DefaultValueListHandlerImpl)getValueListHandler();
    Hibernate3Adapter adapter = (Hibernate3Adapter)handler.getConfig().getAdapter(valueListEntry);
    adapter.setHql(hSql);
   }
   ValueList valueList =
        getValueListHandler().getValueList(valueListEntry,
                                           new ValueListInfo(parameters));
     ValueListInfo valueListInfo=valueList.getValueListInfo();
     request.setAttribute(valueListInfoName, valueListInfo);
    request.setAttribute(valueListName, valueList);
  }

 
 
 
}

 

 

参考:

http://www.albertsong.com/blog/blogview.asp?logID=30&cateID=3

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值