Имеем изображение, хранящееся в BLOB. Цель - положить его на страницу с помощью image bean.
У image bean есть стандартные атрибуты: View Instance и View Attribute. Однако, для вывода изображения из BLOB является недостаточным просто задать эти атрибуты. Нужно:
У image bean есть стандартные атрибуты: View Instance и View Attribute. Однако, для вывода изображения из BLOB является недостаточным просто задать эти атрибуты. Нужно:
- прописать во VO наше BLOB поле, тип по умолчанию - BlobDomain;
- сохранить изображение в файл с уникальным именем;
- программно задать свойство бина image, в котором указать имя файла.
public void processRequest(OAPageContext pageContext, OAWebBean webBean) {
super.processRequest(pageContext, webBean);
String empName = null;
if (pageContext.getParameter("empName") != null){
empName = pageContext.getParameter("empName");
}
OAApplicationModule am = pageContext.getApplicationModule(webBean);
String fStr = "MyImg.jpg";
// создаем уникальное имя файла
fStr = pageContext.generateUniqueImageName(fStr, "temporaryImage");
if(fStr == null || "".equals(s7.trim())){
throw OAException.wrapperException(e);
}
// второй параметр - текущее пакет
Serializable[] prm_values = {fStr,
pageContext.getTemporaryImageLocation()}
Class[] prm_classes = { String.class,
String.class };
// вызываем обертку над выполнением запроса
String img_src = (String)
am.invokeMethod("InitUserDetails", prm_values, prm_classes);
// находим наш бин
OAImageBean imagebean = (OAImageBean)
webBean.findIndexedChildRecursive("Pic");
if(imagebean != null)
{
// задаем источник данных
imagebean.setAttributeValue(SOURCE_ATTR, img_src);
// украшательство
imagebean.setBorderWidth(2);
} else
{
throw OAException.wrapperException(e);
}
}
Метод InitUserDetails public String InitUserDetails(String s1, String s2){
String ret_imgstr;
VOImpl vo = getVO1();
ret_imgstr = (String)vo.GetData(s1, s2);
return ret_imgstr;
}
И, наконец, функционал уровня VOImpl: public String GetData(String s1, String s2) {
executeQuery();
String s3 = "";
ImageUtil ut = null;
if(first() == null)
{
s3 = "";
} else
{
OARow oarow = (OARow)first();
BlobDomain blobdomain = (BlobDomain)oarow.getAttribute("Image");
if(blobdomain == null)
s3 = "";
else
ut = new ImageUtil();
s3 = ImageUtil.createFile(s2, blobdomain, s1);
}
return s3;
}
ImageUtil - класс для работы с изображениями из библиотеки import.com.sun.imageio.plugins.common.ImageUtil;
Комментариев нет :
Отправить комментарий