在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