繁体   English   中英

在Webspehere门户中向JSR 286 Portlet的head元素添加元标记

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM