Вы можете настроить Velocity для использования собственного загрузчика ресурсов источника данных:
package com.foo;
import org.apache.velocity.runtime.resource.loader.DataSourceResourceLoader;
import java.io.Reader;
import java.io.StringReader;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MyDataSourceResourceLoader extends DataSourceResourceLoader
{
/**
* Gets a reader from a result set's column
* @param resultSet
* @param column
* @param encoding
* @return reader
* @throws SQLException
*/
protected Reader getReader(ResultSet resultSet, String column, String encoding)
throws SQLException
{
return new StringReader(resultSet.getString(column));
}
}
Кодировки не проверяются, поэтому они должны быть согласованы между приложением и базой данных.
Затемскажите Velocity использовать загрузчик ресурсов, установив следующие свойства конфигурации:
resource.loaders = ds
resource.loader.ds.class = com.foo.MyDataSourceResource