Имеем изображение, хранящееся в 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;
Комментариев нет :
Отправить комментарий