java - 在liferay portlet中使用jsp作为img src

标签 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()%>/getPicture.jsp&amp;pidm=${pidm}"></img>
</x:if>

作为源的 jsp 是对 Web 服务的发布:

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();

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

最佳答案

renderRequestgetContextPath 最有可能解析为门户的上下文,而您的插件有自己的上下文。事实上,即使 request.getContextPath 也很可能解析为门户(但请仔细检查):当提供 portlet 时,请求由门户处理。当您想要从 Portlet 的 Web 上下文中寻址资源时,您需要显式地对其进行寻址,并且对 Portlet 的 Web 上下文进行硬编码(不优雅)或找到如何对其进行寻址。

按照@ramp的评论并检查getContextPath(对于renderRequestrequest)实际解析的结果,您就更接近解决方案了。如果有疑问,暂时将其替换为硬编码的上下文路径,然后继续搜索动态路径。

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

关于java - 在liferay portlet中使用jsp作为img src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930338/

相关文章:

java - Spring 3中保存内部对象id

liferay - liferay 6.2 中设置参数和设置属性有什么区别?

Heroku 和 Liferay 安装

java - JBOSS_7.1EAP错误 "Services with missing/unavailable dependencies"

java - 部分填充的数组和 NullPointerException

java - 如何从jsp文件中调用java类

java - 在谷歌应用引擎 (Jetty) 中禁用 taglib 扫描

linux - 重定向 apache-tomcat 不通过 h​​ttps 呈现

Java nashorn 比较一个 java 对象是否属于某种 java 类型

java - where子句中的hql问题