2016-02-10 8 views
0

Я работаю с сайтами Webcenter 12.2.1, и у меня есть вопрос о шаблонах для медийных сайтов с URL-адресами суеты. Мои пользователи хотели бы иметь URL тщеславия для некоторых Medias, таких как PDF-файлы или изображения или такие капли. Я могу сделать это для текстовых атрибутов, таких как javascripts или css, но для атрибутов blob, которые я немного застрял. Дело в том, что для создания тщеславных URL-адресов для актива я должен использовать шаблон. В шаблоне, если мне нужно отобразить текст, проблем нет. Для blob я могу получить атрибут, но если я хочу передать результат в качестве шаблона без вызова URL-адреса blob-сервера, я не получаю ничего полезного.Webcenter Sites: URL-адрес для тщеславия для изображений или PDF

Вот код шаблона, который я использую:

<%@page import="java.io.InputStream"%> 
<%@page import="java.io.FileInputStream"%> 
<%@page import="java.io.File"%> 
<%@ page import="com.fatwire.system.*"%> 
<%@ page import="com.fatwire.assetapi.data.*"%> 
<%@ page import="com.fatwire.assetapi.query.*"%> 
<%@ page import="java.util.*"%> 
<%@ page import="com.openmarket.xcelerate.asset.*"%> 
<%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld"%> 
<%@ taglib prefix="ics" uri="futuretense_cs/ics.tld"%> 
<%@ taglib prefix="fragment" uri="futuretense_cs/fragment.tld"%> 
<%@ taglib prefix="render" uri="futuretense_cs/render.tld"%> 
<%@ taglib prefix="asset" uri="futuretense_cs/asset.tld"%> 
<cs:ftcs> 
<% 
Session ses = SessionFactory.getSession(); 
AssetDataManager mgr =(AssetDataManager) ses.getManager(AssetDataManager.class.getName()); 
AssetId id = new AssetIdImpl("Content_R",new Long(ics.GetVar("cid"))); 
List attrNames = new ArrayList(); 
attrNames.add("imagefile"); 
AssetData data = mgr.readAttributes(id, attrNames); 
AttributeData attrDataSource = data.getAttributeData("imagefile"); 
BlobObject fileObj = (BlobObject)attrDataSource.getData(); 
File file = new File(fileObj.getFoldername() + fileObj.getFilename()); 
InputStream in = new FileInputStream(file); 
byte[] bytes = new byte[2048]; 
int bytesRead; 
ServletOutputStream out2 = response.getOutputStream(); 
while ((bytesRead = in.read(bytes)) != -1) { 
    out2.write(bytes, 0, bytesRead); 
} 
in.close(); 
%> 

</cs:ftcs> 

Я уже пробовал обходной путь: перенаправление на сервер больших двоичных объектов, но проблема в том, что я не могу использовать URLs непосредственно как для изображения < img src = "/ prettyUrl"> с перенаправлением не работает.

Кто-нибудь пытался это сделать?

ответ

1

Нашли решение через Oracle Community: я должен использовать контроллер.

пример уже приведен в примере приложения сайта

Http: // <>: <>/сайты/образцы/blob_link_builder

http://docs.oracle.com/middleware/1221/wcs/develop/GUID-C8899CBC-2EC1-4A25-A887-F8B9A868084D.htm#WBCSD8200

Edit: с тех пор я использую другое решение, я использую URL-адрес тщеславия для blob. Вместо того, чтобы делать шаблон, я просто беру AssetType, создаю URL-адрес тщеславия, который будет применяться для атрибута blob моего актива. Это намного проще, чем делать любой шаблон, чтобы отображать изображение или что-то в этом роде.