2016-04-26 1 views
1

Je voudrais connaître tous les moyens possibles d'afficher une image DLFileEntry dans une jsp d'un portlet personnalisé. Plus précisément, j'utilise actuellement la façon suivante mais j'ai quelques problèmes avec des objets DLFileEntry qui ont des valeurs zéro pour « largeimageid »Liferay 6.2 Comment afficher les images stockées dans Documents and Media

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

Quelles sont les alternatives d'obtenir l'URL de l'image sans utiliser le grand id d'image?

Répondre

5

ci-après le modèle similaire à celui qui est utilisé par Liferay Documents et médias 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(); 
} 

PortalUtil.getPortalURL(request) vous ramènera URL de base de votre portail sur httpServletRequest, System.currentTimeMillis() donnera l'heure actuelle (milisecondes) et le reste des paramètres sont tous disponibles via l'objet DLFileEntry.

0

Je pense que cela peut vous aider

<%@ 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> 

Salutations!

+0

Ce que vous avez posté contient le grand identifiant d'image: img_id = <% = image.getLargeImageId()%> qui est celui que je veux éviter lors de l'affichage d'une image. Vérifiez à nouveau ma question. – jkonst