Хорошо, это больше не будет полезным для ОП, но вот ответ.
Это можно сделать на «фазе рендеринга жизненного цикла» портлета - в более обыденных терминах это можно сделать, переопределив 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>
(подробнее о порталах потоковой передачи и буферизации и хорошем примере кода здесь .)
Также обратите внимание, что портал может игнорировать ваш элемент, если считает его угрозой безопасности, но у меня до сих пор с этим не было проблем.
Я не тестировал этот конкретный код, но сделал что-то подобное (по крайней мере на Плутоне), и это сработало. Так что это может быть хорошей отправной точкой.
ПРИМЕЧАНИЕ : для этого у JSR-362 (портлет 3.0) будет фаза полного жизненного цикла портлета HEADER_PHASE
. В этом случае нужно просто реализовать renderHeaders(HeaderRequest, HeaderResponse)
. Но эта спецификация еще не закончена.