2016-04-26 12 views
1

Ich möchte alle Möglichkeiten kennen, wie Sie ein DLFileEntry-Bild in einem JSP eines benutzerdefinierten Portlets anzeigen können. Genauer gesagt, verwende ich zur Zeit die folgenden Art und Weise, aber ich habe einige Probleme mit DLFileEntry Objekten, die Null-Werte für ‚largeimageid‘ habenLiferay 6.2 So zeigen Sie in Dokumenten und Medien gespeicherte Bilder an

DLFileEntry image = DLFileEntryLocalServiceUtil.getFileEntry(long_id); 
String imageUrl = themeDisplay.getPathImage() + "/image_gallery?img_id=" + image.getLargeImageId() + "&t=" + WebServerServletTokenUtil.getToken(image.getLargeImageId()); 

Welche Alternativen des Erhaltens die Bild-URL ohne Nutzung der großen Bild-ID sind?

Antwort

5

Es folgt das Muster ähnlich dem, das von Liferay verwendet wird Dokumente und Mittel Portlet:

DLFileEntry image = DLFileEntryLocalServiceUtil.getFileEntry(long_id); 
String imageUrl = ""; 
if (image != null) { 
    imageUrl = 
     PortalUtil.getPortalURL(request) + "/documents/" + image.getGroupId() + "/" + 
      image.getFolderId() + "/" + image.getTitle() + "/" + image.getUuid() + "?t=" + 
      System.currentTimeMillis(); 
} 

Wo PortalUtil.getPortalURL(request) finden Sie Basis-URL Ihres Portals auf httpServletRequest Basis zurückkehren, System.currentTimeMillis() geben Sie aktuelle Zeit (Millisekunden) und Rest der Parameter sind alle durch DLFileEntry Objekt verfügbar.

0

ich denke, das Sie

<%@ page import="com.liferay.portlet.documentlibrary.model.DLFolder" %> 
<%@ page import="com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil" %> 
<%@ page import="com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil" %> 
<%@ page import="com.liferay.portlet.documentlibrary.model.DLFileEntry" %> 
<%@ page import="java.util.List" %> 
<%@ page import="com.liferay.portlet.imagegallery.service.IGImageLocalServiceUtil" %> 
<%@ page import="com.liferay.portlet.imagegallery.model.IGImage" %> 

<%@ include file="init.jsp" %> 

<% 
    String igFolderId = portletPreferences.getValue("igFolderId", "0"); 
    String cycleSpeed = portletPreferences.getValue("cycleSpeed", "1000"); 
    String fxSpeed = portletPreferences.getValue("fxSpeed", "1000"); 
    String type = portletPreferences.getValue("type", "fade"); 
    String height = portletPreferences.getValue("height", "480"); 
    String width = portletPreferences.getValue("width", "640"); 

    List<IGImage> images = IGImageLocalServiceUtil.getImages(Long.valueOf(igFolderId)); 
%> 

<c:choose> 
    <c:when test="<%= Long.valueOf(igFolderId) != 0%>"> 
     <div id="<portlet:namespace />images"> 
      <% 
       for (int i = 0; i < images.size(); i++) { 
        IGImage image = images.get(i); 
      %> 
       <img width="<%= width %>" height="<%= height %>" src="/image/image_gallery?img_id=<%=image.getLargeImageId()%>" alt="<%=image.getDescription()%>" <%= i == 0 ? "" : "style=\"display:none;\""%>/> 
      <% 
       } 
      %> 
     </div> 
    </c:when> 
    <c:otherwise> 
     <span class="portlet-msg-info"> 
      Please configure this portlet. 
     </span> 
    </c:otherwise> 
</c:choose> 

<script type="text/javascript"> 
    jQuery(
     function() { 
      jQuery("#<portlet:namespace />images").cycle({ 
       fx: '<%= type %>', 
       speed: <%= fxSpeed %>, 
       timeout: <%= cycleSpeed %> 
      }); 
     } 
    ); 
</script> 

Grüße helfen können!

+0

Was Sie gepostet haben, enthält die große Bild-ID: img_id = <% = image.getLargeImageId()%> was ich bei der Anzeige eines Bildes vermeiden möchte. Überprüfen Sie noch einmal meine Frage. – jkonst