![](/img/trans.png)
[英]Reading URL parameters in a JSR286 portlet on Websphere Portal 8.5
[英]Adding meta tag to head element of JSR 286 portlet in Webspehere portal
我们已经开发了JSR 286 portlet。 在IE8中加载JSP页面时,由于屏幕无法正确加载,我们面临一些对齐问题。
我们可以弄清楚,这是因为IE 8兼容性问题。 默认情况下,页面在IE8中以Quirks模式加载。 如果我们将模式更改为IE8 Standard,则可以看到页面加载情况,而没有任何问题。 我发现我们可以设置一个元<meta http-equiv='X-UA-Compatible' content='IE=EmulateIE8' />"
以启用来自JSP的IE8标准模式。
但是如何将meta标签添加到portlet页面的head元素中? 由于我的Web应用程序中没有<html>
, <head>
和<body>
标记,并且它们是从Portlet容器生成的,因此如何将meta标记添加到head元素?
我也尝试覆盖doHeader
方法,如下所示
protected void doHeaders(RenderRequest request, RenderResponse response) {
Element metaKeywords = response.createElement("meta");
metaKeywords.setAttribute("http-equiv", "X-UA-Compatible");
metaKeywords.setAttribute("content", "IE=EmulateIE8");
// response.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, ""); - I tried this option also
//response.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, metaKeywords); - I tried this option also
}
但是什么都没有解决。
我们的应用程序在WAS 7.0上运行。
任何人都可以提出一些建议吗?
好的,这对OP不再有用,但这是答案。
一个人可以在portlet的“渲染生命周期阶段”执行此操作-更普通的说法是,可以通过重写GenericPortlet.doHeaders()
来执行此操作:
public class MyPortlet extends GenericPortlet {
@Override
public void doHeaders(RenderRequest req, RenderResponse res)
throws PortletException {
Element meta = response.createElement("meta");
meta.setAttribute("http-equiv", "X-UA-Compatible");
meta.setAttribute("content", "IE=EmulateIE8");
response.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, meta);
}
}
如果门户网站是流门户网站,则可能必须在portlet.xml上设置容器运行时选项:
<portlet>
<container-runtime-option>
<name>javax.portlet.renderHeaders</name>
<value>true</value>
</container-runtime-option>
</portlet>
(有关流门户网站与缓冲门户网站的更多信息,以及一个很好的代码示例, 在这里 。)
另外,请注意,如果门户认为它是安全隐患,则可以随意忽略您的元素,但是到目前为止,我还没有遇到任何问题。
我没有测试过这个特定的代码,但是做了类似的事情(至少在Pluto上)并且工作了。 因此,这些可以是一个很好的起点。
注意 :JSR-362(Portlet 3.0)将具有一个完整的Portlet生命周期阶段,即HEADER_PHASE
。 在这种情况下,只需要实现renderHeaders(HeaderRequest, HeaderResponse)
。 但是这个规范还只是草稿。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.