Java 在liferay portlet中将jsp用作img src

Java 在liferay portlet中将jsp用作img src,java,jsp,liferay,portlet,Java,Jsp,Liferay,Portlet,我有一些代码检查xml节点值,如果值为true,则显示图像: <x:if select="$person/pictureprivate != 'false'"> <c:set var="pidm"> <x:out select="$person/@pidm" /> </c:set> <img src="<%=renderRequest.getContextPath()%>/getPictur

我有一些代码检查xml节点值,如果值为
true
,则显示图像:

<x:if select="$person/pictureprivate != 'false'">
    <c:set var="pidm">
        <x:out select="$person/@pidm" />
    </c:set>
    <img src="<%=renderRequest.getContextPath()%>/getPicture.jsp&amp;pidm=${pidm}"></img>
</x:if>

我知道webservice jsp是有效的,因为我在另一个应用程序中使用它。但是,映像没有加载到my liferay portlet中,并且在apache错误中尝试
右键单击->查看映像结果
,请求的资源不可用。我想我可能是把src路径定义错了,但我不确定。

renderRequest
getContextPath
很可能解析为门户的上下文,而插件有自己的上下文。事实上,甚至
request.getContextPath
也很可能解析为门户(但请仔细检查):当提供portlet时,请求由门户处理。当您想要从portlet的webcontext中寻址资源时,您需要显式地寻址它,或者硬编码portlet的web上下文(不美观),或者找到如何寻址它

按照@ramp的注释,检查
getContextPath
(对于
renderRequest
request
)实际解决的问题,并且您离解决方案更近了。如果有疑问,现在就用硬编码的上下文路径替换它,然后继续搜索动态路径


还请注意,如果以您希望的方式请求,您将无法访问JSP中门户的登录用户帐户。您没有在JSP中使用它,所以它应该没问题,但我只是想确保这一点也被理解

renderRequest.getContextPath()解析为什么?您的jsp是否位于相对于web应用程序根的路径上?您真的是指
…getPicture.jsp&;pidm=…
?我想应该是
…getPicture.jsp?pidm=…
@TobiasLiefke,这是正确的。我解决了那个问题。
int len;
int size = 1024;
byte[] buf;
OutputStream o = response.getOutputStream();
String pidm=request.getParameter("pidm");

//out.print("URL: " + urlProp + pidm);
URL url = new URL("myURL" + pidm);
URLConnection connection = url.openConnection();

connection.setDoOutput(true);

connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);

InputStream is = connection.getInputStream();


 if (is instanceof ByteArrayInputStream) {
  size = is.available();
  buf = new byte[size];
  len = is.read(buf, 0, size);
} 
else {
  ByteArrayOutputStream bos = new ByteArrayOutputStream();
  buf = new byte[size];
  while ((len = is.read(buf, 0, size)) != -1)
    bos.write(buf, 0, len);
  buf = bos.toByteArray();
}

 o.write(buf);  
 o.flush();
 o.close();